post-css-to-viewport
,若是我說這種方案能解決98%以上的移動端佈局痛點,我想整個博客園,應該沒有人會反駁。在以前有一種流行已久的移動端適配方案,那就是rem
,我想下面這兩句代碼,有很多老移動端都不會陌生:css
const deviceWidth = document.documentElement.clientWidth || document.body.clientWidth;
document.querySelector('html').style.fontSize = deviceWidth / 7.5 + 'px';
750*1334
滿天飛的時代,這兩句代碼確實給開發者帶來了很大的方便,這樣設置根font-size後,px和rem的轉換比例成了100, 爲好比UI稿一個長寬分別爲120px*40px
,那麼開發者對應的寫成1.2rem*0.4rem
就能夠了px-to-rem
或者px2rem
就是爲了解決這個問題font-size
,有很多人但願給字體設置一個固定的px,它不會隨着設備的不一樣而轉換成rem,由於這樣在一些平板設備上顯得太大了postcss-px-to-viewport
就是這樣一款優秀的插件,它解決了以上提到的痛點,也知足以上提到的理想要求。它將px轉換成視口單位vw,衆所周知,vw本質上仍是一種百分比單位,100vw即等於100%,即window.innerWidth
npm i postcss-px-to-viewport -D
.postcssrc.js
文件module.exports = {
plugins: {
autoprefixer: {}, // 用來給不一樣的瀏覽器自動添加相應前綴,如-webkit-,-moz-等等
"postcss-px-to-viewport": {
unitToConvert: "px", // 要轉化的單位
viewportWidth: 750, // UI設計稿的寬度
unitPrecision: 6, // 轉換後的精度,即小數點位數
propList: ["*"], // 指定轉換的css屬性的單位,*表明所有css屬性的單位都進行轉換
viewportUnit: "vw", // 指定須要轉換成的視窗單位,默認vw
fontViewportUnit: "vw", // 指定字體須要轉換成的視窗單位,默認vw
selectorBlackList: ["van"], // 指定不轉換爲視窗單位的類名
minPixelValue: 1, // 默認值1,小於或等於1px則不進行轉換
mediaQuery: true, // 是否在媒體查詢的css代碼中也進行轉換,默認false
replace: true, // 是否轉換後直接更換屬性值
exclude: [/node_modules/], // 設置忽略文件,用正則作目錄名匹配
landscape: false // 是否處理橫屏狀況
}
}
};
<template>
<div class="test-viewport">測試轉換</div>
</template>
<style lang="less" scoped>
.test-viewport {
width: 750px;
height: 100px;
font-size: 40px;
text-align: center;
line-height: 100px;
background: #13b5b1;
}
</style>
propList
: 當有些屬性的單位咱們不但願轉換的時候,能夠添加在數組後面,並在前面加上!號,如propList: ["*","!letter-spacing"]
,這表示:全部css屬性的屬性的單位都進行轉化,除了letter-spacing
的selectorBlackList
:轉換的黑名單,在黑名單裏面的咱們能夠寫入字符串,只要類名包含有這個字符串,就不會被匹配。好比selectorBlackList: ['van']
,它表示形如van
,van-tab
,tab-van
,vant
這樣的類名的單位,都不會被轉換本文使用 mdnice 排版html