移动端适配解决方案

移动端适配有很多方案,其中 rem 是被大家一直利用的一种方案。

目前我司在用的另一种布局方案,viewportcaniuse 查询 viewport 的兼容性基本都没问题,整体支持率达到 98.35%。今天的主角是 postcss-px-to-viewport,移动端适配可以通过这个插件来解决。

要使用 viewport 适配方案,必须先要安装 postcss-px-to-viewport 这个包,postcss-px-to-viewport 是将 px 单位转换为 vw、vh 的一个 npm 插件。

vue-cli 创建的项目中来做一下演示

  • 首先我们创建一个项目并且来安装对应的插件
1
2
3
vue create postcss-px-to-viewport-demo

cd postcss-px-to-viewport-demo && yarn add postcss-px-to-viewport -D
  • 初始化好的 vue 项目根目录下创建 .postcssrc.js 文件
  • 添加配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module.exports = {
plugins: {
autoprefixer: {}, // 浏览器自动添加相应前缀,如-webkit-,-moz-等等
"postcss-px-to-viewport": {
unitToConvert: "px", // 要转化的单位
viewportWidth: 750, // UI设计稿的宽度
unitPrecision: 5, // 转换后的精度,即小数点位数
propList: ["*"], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
viewportUnit: "vw", // 指定需要转换成的视窗单位,默认vw
fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位,默认vw
selectorBlackList: [], // 指定不转换为视窗单位的类名,
minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
mediaQuery: false, // 是否在媒体查询的css代码中也进行转换,默认false
replace: true, // 是否转换后直接更换属性值
exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配
landscape: false, // 是否处理横屏情况
},
},
};
  • 因为我们设置的基准宽度是 750,最后在 vue-cli 生成的文件中找一个 vue 文件,设置一下图片 Logo 大小为 width: 75px ,在浏览器控制台会发现图片的 width 变为 10vw 。至此可以看出我们的插件生效了~

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!