移动端适配

274 阅读1分钟

移动端适配

参考地址:

www.zhihu.com/question/50…

www.zhihu.com/question/37…

在 PC 端,一般情况下,1 个物理像素 = 1 个 css 像素。

在移动端,各种手机机型分辨率不同,1 个物理像素对应不同大小的 css 像素。

可以使用 window.devicePixelRatio当前显示设备 的物理像素分辨率与CSS 像素分辨率比率。简单来说,这告诉浏览器应该使用多少屏幕的实际像素来绘制单个 CSS 像素。

如下有几种适配方案:

  • flexible + px2rem + rem
  • vw

rem:根标签(<html>)的字体大小

1 flexible.js

1、介绍

将 1rem 重设为 10vw

相当于屏幕越宽,展示的内容越大,而不是越多。

2、github 地址

 https://github.com/amfe/lib-flexible

3、安装

 npm install amfe-flexible

4、在 main.js 中引入

 import 'amfe-flexible'

2 px2rem

1、介绍

将 px 转化为 rem

考虑到项目用的是 Vue 框架,要使用 UI 库,例如 Vant 使用的单位是 px。

若不考虑此类 UI 库,则不需要引入 px2rem,开发时单位均使用 rem 即可

2、安装

此版本对应配置文件

 npm install postcss-pxtorem@5.1.1

3、配置

在根文件夹创建配置文件 postcss.config.js

 module.exports = {
   plugins: {
     autoprefixer: {
       overrideBrowserslist: [
         'Android >= 4.0',
         'iOS >= 7',
         'Chrome > 31',
         'ff > 31',
         'ie >= 10'
       ]
     },
     'postcss-pxtorem': {
       rootValue: 37.5,
       propList: ['*']
     }
   }
 }

3 关于 vw

vw:视窗宽度,屏幕宽度 = 100vw

对于简单的项目,完全可以使用 vw 代替 px 来进行适配。即所有单位都用 vw,如字体大小、宽高等等。因为实际上 flexible 也是将 1rem 重设为 10vw。

为什么不早点用 vw ?

浏览器最开始不支持 vw,早期浏览器只支持 px、%、rem、em,直到 2018 年才开始支持 vw 单位