舊的rem適配方案(不管是直接使用rem,仍是配合flexiblejs等lib庫進行視口縮放)已經疲態盡顯,且隨着安卓高清屏的不斷出現,同時data-dpr仍有進一步增長的可能性,rem顯得並非那麼穩固與趁心如意。css
首先截止至發文日期,viewport的兼容性以下:
能夠看到,viewport的兼容性支持已經變得很是好,所以有機會拋棄一切外接庫,直接使用原生的viewport。就像最先使用sublime到如今的vscode,都須要從新配置插件px2rem, 換了編輯器,換了環境,開發就會變得很陌生。再加上不一樣插件快捷鍵觸發條件也不一樣,這就給本來就很煎熬的前端開發又增長了複雜度。好在postcss出現了,它容許咱們用更加完全(相比less和scss而言)的編程思惟或者說面向對象的思惟去對css作預處理。前端
回到px轉vw的問題上,解決此問題可使用與postcss官方兼容的插件 postcss-px2vw-pv 解決:git
官方文檔: https://github.com/pomelott/postcss-px2vw-pvgithub
此插件使用全新的置換單位pv,沒有過多複雜的配置,用postcss自動對各類複雜css樣式作計算與轉換,而沒必要在開發過程當中再考慮各類快捷鍵、編輯器插件以及轉換配置等。npm
npm i postcss-px2vm-pv -D
yarn add postcss-px2vw-pv --dev
選項 | 類型 | 默認值 | 描述 |
---|---|---|---|
width | number | 750 | 設計稿像素寬度 |
decimal | number | 4 | 換算後小數點後的保留位數 |
comment | boolean | true | 是否生成插件相關注釋 |
module.exports = { plugins: [ require('postcss-px2vw-pv') ] }
module.exports = { plugins: [ require('postcss-px2vw-pv')({ width: 1080 }) ] }
.box { width: 500pv; transform: translateX(10pv); }
.box { width: 66.666667vw; transform: translateX(1.333333vw); }