Vue使用lib-flexible,将px转化为rem

1.下载lib-flexible

我使用的是vue-cli+webpack,因此是经过npm来安装的css

npm i lib-flexible --save

2.引入lib-flexible

在main.js中引入lib-flexiblehtml

import 'lib-flexible/flexible'

3.安装px2rem-loader

npm install px2rem-loader

4.配置px2rem-loader

在build文件中找到util.js,将px2rem-loader添加到cssLoaders中,将下面代码加进cssLoaders方法中vue

  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUint: 75
    }
  }

 

同时,在generateLoaders方法中添加px2remLoaderwebpack

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

    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

五、重启

当配置完以后,重启下服务,px会自动转化为rem了web

npm run dev

六、注意事项

一、不能在index.html的头部加 name 为 viewport 的 meta 标签,flexible会自动为咱们添加!vue-cli

二、对css中文字样式增长/* px */后缀,会编译出适应不一样dpr的字号npm

.text{
    font-size: 28px; /* px */
}
// 会被编译成以下:

[data-dpr="1"] .text { // data-dpr是由flexible计算出来并加在html上的设备像素比
    font-size: 14px;
}

[data-dpr="2"] .text {
    font-size: 28px;
}

[data-dpr="3"] .text {
    font-size: 42px;
}

三、对边框样式增长/* no */后缀,会保持原样post

.box{
    border: 1px solid #fff; /* no */
}
// 会被编译成以下:
.box{
    border: 1px solid #fff;
}
相关文章
相关标签/搜索