1.下載lib-flexible
我使用的是vue-cli+webpack,所以是通過npm來安裝的
npm i lib-flexible --save
2.引入lib-flexible
在main.js中引入lib-flexible
import 'lib-flexible/flexible'
3.安裝px2rem-loader
npm install px2rem-loader
4.配置px2rem-loader
在build文件中找到util.js,將px2rem-loader添加到cssLoaders中,將下面代碼加進cssLoaders方法中
const px2remLoader = {
loader: 'px2rem-loader',
options: {
remUint: 75
}
}
同時,在generateLoaders方法中添加px2remLoader
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
})
})
}
5、重啟
當配置完之后,重啟下服務,px會自動轉化為rem了
npm run dev
6、注意事項
1、不能在index.html的頭部加 name 為 viewport 的 meta 標簽,flexible會自動為我們添加!
2、對css中文字樣式增加/* px */后綴,會編譯出適應不同dpr的字號
.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;
}
3、對邊框樣式增加/* no */后綴,會保持原樣
.box{
border: 1px solid #fff; /* no */
}
// 會被編譯成如下:
.box{
border: 1px solid #fff;
}

