postcss-pxtorem設置不轉換UI框架的CSS單位問題
更新時間:2024年07月25日 09:19:07 作者:一捆鐵樹枝
這篇文章主要介紹了postcss-pxtorem設置不轉換UI框架的CSS單位問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
postcss-pxtorem設置不轉換UI框架的CSS單位
在移動端項目中使用postcss-pxtorem做適配,同時也使用到了第三方UI庫(vant)。
這時就出現了一個問題。
第三方UI庫使用的是px,而postcss將頁面中的px 全部轉化成了rem.導致樣式縮小。
查詢postcss配置文檔后發(fā)現 其提供了selectorBlackList 屬性來忽略掉某些選擇器,vant-UI組件庫的CSS都是以.van開頭的 因此我只需要將 .van 忽略掉就好
具體配置如下:
module.exports = {
plugins: {
// 這個工具可以實現自動添加CSS3前綴
"autoprefixer": {
overrideBrowserslist: ['last 5 version', '>1%', 'ie >=8']
},
//如果你使用rem來實現移動端多設備適配,這個工具可以把px轉換為rem
"postcss-pxtorem": {
rootValue: 100, // 指定轉換倍率,我現在設置這個表示1rem=100px;
minPixelValue: 1, // 需要轉換的最小值,一般1px像素不轉換,以上才轉換
unitPrecision: 6, // 轉換成rem單位的小數點后的保留位數
selectorBlackList: ['.van'], // 匹配不被轉換為rem的選擇器
propList: ['*'], // 屬性列表,表示你要把哪些css屬性的px轉換成rem,這個*表示所有
replace: true, // 替換包含rem的規(guī)則,而不是添加回退
mediaQuery: false // 允許在媒體查詢中轉換px
}
}
}postcss-pxtorem px不轉換為rem的做法
有些場景是不要px轉為rem的時候,如果不想設置vscode的vetur的設置,當然也不建議設置,除非團隊每個人都設置,要不然就會被保存格式化,PX都會轉為px
所以采用如下做法:
postCssPxToRem({
// 自適應,px>rem轉換
rootValue: 192, // 根據設計圖尺寸寫,設計圖是 1920,就寫 192
propList: ['*'], // 需要轉換的屬性,這里選擇全部都進行轉換
selectorBlackList: ['-nopx'], // 過濾掉-nopx結尾的class,不進行rem轉換
}),實際代碼設置如下:
<div id="lightEchart-nopx"></div>
效果如圖:

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

