vue:将px转化为rem,适配移动端vant-UI等框架(postcss-pxtorem/px2rem-loader)

1. 下载 lib-flexible

使用的是 vue-cli + webpack,通过npm来安装

npm i lib-flexible --save

2. 引入 lib-flexible

在main.js中引入lib-flexible

import 'lib-flexible/flexible'

3. 设置 meta 标签

通过 meta 标签,设置设备宽度以及缩放比例

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">

4. 安装 postcss-pxtorem

一款 postcss 插件,用于将单位转化为 rem

npm install postcss-pxtorem -D

5. 配置postcss-pxtorem

在安装postcss-pxtorem的时候会生成一个文件 .postcssrc.js

在根目录找到 .postcssrc.js 文件,可以在此配置的基础上根据项目需求进行修改,如:

module.exports = {
  plugins: {
    //...
    'autoprefixer': {
      browsers: ['Android >= 4.0', 'iOS >= 7']
    },
    'postcss-pxtorem': {
      rootValue: 37.5, //vant-UI的官方根字体大小是37.5
      propList: ['*']
    }
  }
}

注意: 在配置 postss-loader 时,应避免 ignore node_modules目录,这回导致 Vant的样式无法被编译

rootValue这个配置项的数值是多少的呢??? 通常我们根据设计图来决定这个值,原因很简单,便于开发. 假如设计图给的宽度是750,通常我们就会把 rootValue设置为75,这样我们写样式时,可以直接按照设计图标注的宽度来1:1还原开发.(iPhone界面尺寸: 320*480 , 640*960 , 640*1136 , 750*1334 , 1080*1920 等 .)

那为什么在这里写成了37.5呢???

之所以设为 37.5,是为了引用像 vant , mint-ui这样的第三方UI框架,因为第三方框架设有兼容rem,用的是px单位,rootValue的值设置为设计图宽度(这里为750px)75的一半,即可以1:1还原vant , mint-ui的组件,否则样式会有变化,例如 按钮会变小.

既然设置成了37.5 那么我们必须在写样式时,也将值改为设计图的一半.

6. 当配置完之后,只需要重启一下服务,就自动转化为rem了

拓展:

px转rem不仅可以用 postcss-pxtorem ,同时还有 px2rem-loader,只是配置不一样.

使用 px2rem-loader 前三步是一样的,

4. 安装 px2rem-loader 

npm install px2rem-loader

5. 配置 px2rem-loader 

在 build 文件中找到 util.js , 将 px2rem-loader 添加到 CSSLoaders中,如:

const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 75 // 这里设置html根字体,vant-UI的官方根字体大小是37.5
    }
  }

同时,在 generateLoaders方法中添加 px2remLoader

function generateLoaders (loader, loaderOptions) {
      const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]
     ...
     ...
     ...
}

 6. 当配置完之后,只需要重启服务,就自动转化为rem了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发那点事儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值