1、postcss-px2rem-exclude(推薦) || postcss-px2rem(不推薦);
2、rem.js
第一步: npm install postcss-px2rem-exclude --save //找到:postcss.config.js //在plugins新增 'postcss-px2rem-exclude': { remUnit: 37.5,// 1rem等於多少px,此為轉換單位(不重要) exclude: /node_modules|folder_name/i //遮蔽node_modules裡的css,使用postcss-px2rem不能遮蔽,所以會導致引入的一些ui變形 }
第二步: 新建rem.js // 設定 rem 函式 function setRem() { // 320 預設大小16px; 320px = 20rem ;每個元素px基礎上/16 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth; console.log(htmlWidth) //得到html的Dom元素 let htmlDom = document.getElementsByTagName('html')[0]; if (htmlWidth >= 450) { //設定根元素字型大小 ,以此控制頁面元素大小程度 htmlDom.style.fontSize = 22 + 'px'; } else { //設定根元素字型大小,以此控制頁面元素大小程度 htmlDom.style.fontSize = htmlWidth / 20 + 'px'; } } // 初始化 setRem(); // 改變視窗大小時重新設定 rem window.onresize = function() { setRem() } 根據視窗大小動態設定根元素的size;
// rem.js 第二種寫法 // rem等比適配配置檔案 // 基準大小 const baseSize = 14 // 設定 rem 函式 function setRem () { // 當前頁面寬度相對於 1920寬的縮放比例,可根據自己需要修改。 const scale = document.documentElement.clientWidth / 1920 // 設定頁面根節點字型大小(“Math.min(scale, 2)” 指最高放大比例為2,可根據實際業務需求調整) document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px' } // 初始化 setRem() // 改變視窗大小時重新設定 rem window.onresize = function () { setRem() }
man.js中引入
import './util/rem'
vue.config中配置外掛
// 引入等比適配外掛 const px2rem = require('postcss-px2rem') // 配置基本大小 const postcss = px2rem({ // 基準大小 baseSize,需要和rem.js中相同 // remUnit: 14 代表 1rem = 14px; 所以當你一個14px值時,它會自動轉成 (14px/14)rem remUnit: 14 }) // 使用等比適配外掛 module.exports = { lintOnSave: true, css: { loaderOptions: { less: { javascriptEnabled: true, }, postcss: { plugins: [ postcss, ], }, }, }, }
忽略的寫法可以有多個資料夾:admin 和 element-ui/
module.exports = { "plugins": { "postcss-import": {}, "postcss-url": {}, // to edit target browsers: use "browserslist" field in package.json "autoprefixer": {}, "postcss-px2rem-exclude":{ remUnit:37.5, exclude:/admin|element-ui/ //此目錄下的檔案不會被轉換為rem } } };