#移动端为主的宽度响应设计

#无需适配设备

#设备像素 DP(device pixels)

设备像素也叫物理像素,就是设备的真实像素

如电脑显示器常见的 1k(1920x1080)、2k(2560*1440)、4k(3840x2160) 等

以前使用 1k 显示器时往往直接可以用,但是用 2k 以上时发现字体会变得比较小,这就是因为设备像素大了,导致同样大小的像素点占的面积小了

而想让字体占同样的面积,使用更多像素点,更清晰,那就需要设备独立像素了

#设备独立像素

设备独立像素也叫逻辑像素

每个逻辑像素对应的设备像素数量是由操作系统(包括用户配置)决定的

理论上像素必须整数倍缩放,但是操作系统通过插值,抗锯齿等优化可以适配非整数倍,当然效果可能比整数倍差一点

像我现在的 2k 屏幕,设备独立像素我 mac 设置的是 2016x1134(HiDPI),mac 的说明也是 looks like 2016x1134

win 也可以进行缩放调整,如常用 150%

HiDPI 其实是一个缩写 High Dots Per Inch,每英寸包含数量更多的像素,概念名称不重要,本质都是,每英寸包含数量更多的像素

#设备像素比 DPR(device pixels ratio)

设备像素比就是操作系统配置的 设备像素 / 设备独立像素 来处理设备独立像素,设备像素比越高,越清晰

#CSS 像素

CSS 像素就是 1:1 基于设备独立像素

由此就知道了,我们开发网页不需要关注用户设备的分辨率与缩放,因为这是操作系统和用户对设备独立像素的配置

我们需要的是一个设计标准,设计理念是以能放下所有内容的宽度设计即可

像移动端,根据 比较小宽度的手机 iPhone5 的标准,设备像素宽度 750,DPR2,得出设计稿宽度 375px

像 PC 端,我们一般以某比较小宽度的电脑为标准,使用 1260px

而浏览器内的缩放,就是将 CSS 像素与设备独立像素的比值提高,不需要特地关注,使用 移动端为主的宽度响应设计即可

#宽度响应设计

#viewport

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

这一行 html 代码是不是很常见

作用是 让当前 viewport 的宽度等于设备的宽度,同时不允许用户手动缩放

如果没有配置,就梦回 2010 年,3G 网看网页还要上下左右看,因为 viewport 的宽度默认是网页最大宽度

配置后,在 PC 端,浏览器宽度肯定小于设备宽度,一般不影响

但是在移动端,就构成了我们现在的移动端页面,宽度固定在移动端宽度,且不可缩放

#rem 方案的淘汰

rem 方案是 viewport 的过渡方案,将设计稿除以 100,等分为 7.5 份来实现移动端不同屏幕尺寸配置不同的字体大小

vw 在适配完成后,已经可以更好的,语义化的使用了,也可以通过 postcss 插件进行 px-vw 的转换

仓库 flexible也已经声明

由于 viewport 单位得到众多浏览器的兼容,lib-flexible 这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用 viewport 来替代此方。

#设计理念转变

从移动端的宽度变大字体变大

变成宽度变大内容变多

例如特斯拉、tailwind 官网等,宽度的变化,不会导致字体大小的变化

但是有图片变化等需求的,仍然可以使用 vw 适配,或者使用 aspect-ratio 保持宽高比

#媒体查询适配

如通过媒体查询,我们就可以直接使用 px,从移动端宽度 375px 开始,宽度变大到 768px,适配平板宽度,宽度变化到 1260px,适配 pc 宽度

根据设计的需求,对部分需要同比放大的元素,我们可以将 px 换成 vw

另外,如果还是有移动端所有元素同比放大需求的,可以自定义插件移动端全部使用 px-vw 转变,平板与 pc 端使用媒体查询后的 px,避免平板与 pc 端内容过大的问题

#黑科技方案(误)

设置各元素的宽度就等于设计稿中宽度,然后计算出设计稿宽度和实际设备显示宽度的比例,之后用 scale 属性进行缩放使其实际显示宽度等于设备显示宽度

小心使用