postcss-px-to-viewport
postcss-px-to-viewport,可以將px單位自動轉換成viewport單位(vw表示屏幕的1%)。
npm install postcss-px-to-viewport --save-dev 或者使用yarn安裝 yarn add postcss-px-to-viewport -D //可能會報錯。就是用npm
因為是vue-cli3.0所以找到項目根目錄下vue.config.js配置文件,在該文件中寫入如下內容
module.exports = { devServer: { port: 8080, disableHostCheck: true, },
// 每個人的寫法不同,導致vue.config.js里代碼不同,此處為常規寫法,進去直接查找loaderOptions css: { loaderOptions: { postcss: { plugins: [ require("postcss-px-to-viewport")({ unitToConvert: "px",// 要轉化的單位 viewportWidth: 1920,// UI設計稿的寬度
// viewportHeight:1080, // UI設計高度可以不寫 unitPrecision: 5,// 轉換后的精度,即小數點位數 propList: [ "*" ],// 指定轉換的css屬性的單位,*代表全部css屬性的單位都進行轉換 viewportUnit: "vw",// 指定需要轉換成的視窗單位,默認vw fontViewportUnit: "vw",// 指定字體需要轉換成的視窗單位,默認vw // landscapeUnit: 'vh',// 橫屏時使用的單位 手機橫屏使用 // landscapeWidth: 667,// 橫屏時使用的視口寬度 selectorBlackList: [],// 指定不轉換為視窗單位的類名 minPixelValue: 1,// 默認值1,小於或等於1px則不進行轉換 mediaQuery: false,// 是否在媒體查詢的css代碼中也進行轉換,默認false replace: true,// 是否轉換后直接更換屬性值 // landscape: false, // 是否處理橫屏情況 exclude: /(\/|\\)(node_modules)(\/|\\)/, // 設置忽略文件,用正則做目錄名匹配 }) ] } } } }
切記不能寫style行內樣式不會生效.
vue-cli2: 在更目錄下新建.postcssrc.js
module.exports = { "plugins": { // "postcss-import": {},s "postcss-url": {}, // to edit target browsers: use "browserslist" field in package.json // "autoprefixer": {}, "autoprefixer": { path: ['./src/*'] }, "postcss-import": {}, "postcss-px-to-viewport": { "viewportWidth": "1920", // 視窗的寬度,對應的是我們設計稿的寬度 "viewportHeight": "1080", // 視窗的高度 "unitPrecision": 2, //指定`px`轉換為視窗單位值的小數位數(很多時候無法整除) "viewportUnit": "vw", //指定需要轉換成的視窗單位,建議使用vw "selectorBlackList": [], //指定不轉換為視窗單位的類 "minPixelValue": 1, // 小於或等於`1px`不轉換為視窗單位 "mediaQuery": false, // 允許在媒體查詢中轉換`px` // "exclude": [/(\/|\\)(dataExpress)(\/|\\)/, /(\/|\\)(css)(\/|\\)/] // "exclude": /(\/|\\)(dataExpress)(\/|\\)/ }, } }
然后重啟項目,實現
使用vwvh
- 優點:rem ,使用 vw 和 wh 是非常直觀的,讓其他人看到就能知道,該界面是以怎么樣的結構進行布局,利於維護
- 缺點:vw 在一些三星的機子會有兼容問題,導致失效,以及不同瀏覽器兼容問題