# 响应式布局

随着人们使用的屏幕尺寸的种类越来越多,出现了响应式网页设计的概念(responsive web design,RWD),RWD 指的是允许 Web 页面适应不同屏幕宽度因素等,进行布局和外观的调整的一系列实践。

响应式 Web 设计不是单独的技术,它是描述 Web 设计的一种方式、或者是一组最佳实践的一个词,它是用来建立可以响应查看内容的设备的样式的一个词。

# 1、媒体查询

响应式设计仅仅是因为媒体查询才新兴起来的。媒体查询第三级规范已经在 2009 年成为了候选推荐,这意味着它可视为准备好在浏览器中开始支持了。媒体查询允许我们运行一系列测试,例如用户的屏幕是否大于某个宽度或者某个分辨率,并将 CSS 选择性地适应用户的需要应用在样式化页面上。

@media screen and (min-width: 800px) {
  .container {
    margin: 1em 2em;
  }
}
1
2
3
4
5

# 2、灵活网格

使用灵活网格,你只需要加进去一个断点,在内容看起来不齐整的时候改变设计。例如如果一行随着屏幕大小增加而增长得不可读的长,或者是一个盒子在变窄时把每行的两个单词挤到一起。

现代布局方式,例如多栏布局、伸缩盒和网格默认是响应式的。

# 2.1 使用 float + 百分比

.col {
  float: left;
  width: 25%;
}
1
2
3
4

# 2.2 column 多列

.container {
  column-count: 3;
}
1
2
3

# 2.3 伸缩盒

使用了 flex: 1 的简写,可伸缩物件每个将会占据一份可伸缩容器中相等大小的空间。

.container {
  display: flex;
}

.item {
  flex: 1;
}
1
2
3
4
5
6
7

# 2.4 网格

下面的示例创建了一个有着 3 个大小为 1fr 的轨道的网格容器。这会创建三个列轨道,每个占据了容器中可用空间的一部分。

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
}
1
2
3
4

# 2.5 视口单位

响应垂直居中:

.div {
  width: 50vw;
  height: 50vh;
  margin: 25vh auto;
}
1
2
3
4
5

# 3、视口元标签

<meta name="viewport" content="width=device-width,initial-scale=1">
1

这个元标签告诉移动端浏览器,它们应该将视口宽度设定为设备的宽度,将文档放大到其预期大小的100%,在移动端以你所希望的为移动优化的大小展示文档。

和视口元标签一起,你可以使用另外几个设定:

  • initial-scale:设定了页面的初始缩放,我们设定为1。
  • height:特别为视口设定一个高度。
  • minimum-scale:设定最小缩放级别。
  • maximum-scale:设定最大缩放级别。
  • user-scalable:如果设为no的话阻止缩放。
上次更新: 4/10/2022, 10:26:50 AM