响应式

Responsive Web Design 响应式页面设计,同一个页面可以适应不同屏幕大小设备的设计方案。

viewport

设置屏幕视口,如果不设置,浏览器会默认设置一个 PC 的宽度(980px),兼容之前的 PC 的页面,让其在手机上可以放大和拖动页面。在 iPhone 出来之前,大部分都时 PC 的页面,很少为手机做的页面,因此为了在手机上也能看 PC 的页面,浏览器就有了这样一个兼容处理。但是这个方法不适用于我们的移动页面开发,可以通过设置改变 viewport 的大小。

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

某些页面还会做一个处理,不希望用户自行方法和缩小页面,把两手指放大缩小的功能禁用。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

响应式图片

  • 大图随着容器自动缩放,保持高宽比
  • max-width: 100%

媒体查询

媒体查询包含一个媒体类型(media type) 以及一个到多个测试媒体特性(media feature)的表达式,表达式和媒体类型将根据实际情况计算得到true或者false。如果指定的媒体类型符合当前设备并且媒体特性表达式都为真,那当前媒体查询为。针对不同屏幕,应用不同的样式。

<link rel="stylesheet" href="m.css" media="screen and (max-width: 480px)">
@media screen and (min-width: 480px) {
    .selector { ... }
}

可以查询的 media

  • width
  • height
  • device-width
  • device-height
  • device-pixel-ratio
  • orientation

device-width 为设备宽度,在某些 App 中,网页只是视图中的一个部分。大部分情况下,和 width 一样。

自适应

背景图片

  • background-size: cover 图片会覆盖容器,图片可能会被裁切
  • background-size: contain 图片非常重要,图片完整显示

固定高宽比容器

生成一个固定的高宽比容器,子元素再绝对定位于其中,适配容器。

height: 0;
padding-top: 50%:
background: #f99;

两栏

自适应布局

  • float 与 BFC
  • 绝对定位
  • 模拟 table
  • flex 布局

网格

网格布局,自动换行

  • inline-block + justify
  • flex