移动端适配-使px自动转换rem

41次阅读

共计 1017 个字符,预计需要花费 3 分钟才能阅读完成。

  1. 先安装 postcss-pxtorem:npm install postcss-pxtorem –save-dev进行安装
  2. 通过屏幕的变化,设置动态根元素font-size


我写在 vue 的 html 中

function setRem () {

        let htmlWidth = document.documentElement.clientWidth ||document.body.clientWidth;  // 检测 html 的屏幕宽度和 body 的屏幕宽度
        document.documentElement.style.fontSize= htmlWidth/7.5 + 'px'; // 设置 font-size 在 750 屏幕下的尺寸为 100px, 这样转换的 rem 可以一目了然之前是多少 px 的。开发屏幕尺寸自己选,3.2 的 320 屏幕宽也可以。}
      
      setRem();
      window.onresize = function () {   // 浏览器尺寸变化进行触发 window.onresize 函数,然后触发函数 setRem()
        setRem()}

- 然后在 .postcssrc.js 中进行 postcss-pxtorem 配置(.postcssrc.js 是脚手架自动生成文件。配置完,要重新 npm run dev 运行):

  • 红圈内的需要配置的,剩下的是自带的

'postcss-pxtorem': {
  rootValue: 100,  // 根元素大小设置,也就是 html 的 font-size 大小
  unitPrecision: 5,  // 保留 rem 小数点多少位
  propList: ['*'],    //  是一个存储哪些将被转换的属性列表,这里设置为 ['*'] 全部,假设需要仅对边框进行设置,可以写['*', '!border*']  
  selectorBlackList: ['.radius'],  // 则是一个对 css 选择器进行过滤的数组,比如你设置为['fs'],那例如 fs-xl 类名,里面有关 px 的样式将不被转换,这里也支持正则写法。replace: true,  // 这个真不知到干嘛用的。有知道的告诉我一下
  mediaQuery: false,  // 媒体查询 (@media screen 之类的) 中不生效
  minPixelValue: 12  //px 小于 12 的不会被转换

    }
  • 配置完了可以重新运行了 npm run dev

200px 的宽高

200px 变成 2rem 配置的 100px 为 font-size。rootValue 为 100


设置 class 名为 radius 的样式不被转换


没有被转换

正文完
 0