當你在項目中采用rem做響應式頁面的時候,如果代碼里面寫的是rem單位的話,會不好判斷各種距離、寬高的具體數值,下面介紹一款插件:px2rem,使用此插件可以在代碼里依然寫px,啟動項目會自動將px單位轉換為可響應的rem單位
第一步
- install
cnpm install postcss-px2rem px2rem-loader --save
第二步
- 在項目src目錄下新建util文件夾(如已有請忽略),在util文件夾下新建rem.js文件,內容如下:
// rem等比適配配置文件
// 基准大小
const baseSize = 16
// 設置 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()
}
第三步
- 在項目main.js中引入此文件
import './util/rem'
第四步
- 在項目根目錄新建vue.config.js文件(如已有請忽略),並在其中添加如下代碼
// 引入等比適配插件
const px2rem = require('postcss-px2rem')
// 配置基本大小
const postcss = px2rem({
// 基准大小 baseSize,需要和rem.js中相同
remUnit: 16
})
// 使用等比適配插件
module.exports = {
lintOnSave: true,
css: {
loaderOptions: {
postcss: {
plugins: [
postcss
]
}
}
}
}
注意事項
- 如果某一行css代碼就想使用px為單位不想被轉換有兩種方案
- 大寫PX。此方案本人實測會被vscode格式化插件格式化為小寫,諸君也可以試試,如果沒裝格式化插件的話此方案是最方便的
- 在這行css代碼后面加上注釋
/*no*/。本人親測可行
效果展示


如此一來,只需經過一次配置,項目所有地方只要想用rem做響應式就可以直接寫px了,棒棒的