rem是根元素(html
)中的font-size
值。
rem佈局很少贅述,有不少詳細說明rem佈局原理的資料。
簡單的說,經過JS獲取設備寬度動態設定rem值,以實如今不一樣寬度的頁面中使用rem做爲單位的元素自適應的效果。
新建rem.js
文件,於main.js
中引用javascript
// 設計稿以1920px爲寬度,而我把頁面寬度設計爲10rem的狀況下 const baseSize = 192; // 這個是設計稿中1rem的大小。 function setRem() { // 實際設備頁面寬度和設計稿的比值 const scale = document.documentElement.clientWidth / 1920; // 計算實際的rem值並賦予給html的font-size document.documentElement.style.fontSize = (baseSize * scale) + 'px'; } setRem(); window.addEventListener('resize', () => { setRem(); });
postcss-pxtorem
是PostCSS
的插件,用於將像素單元生成rem單位。
postcss-pxtorem
npm install postcss-pxtorem --save-dev
能夠經過3個地方來添加配置,配置文件皆位於vue 項目根目錄中,若文件不存在能夠自行創建。css
其中最重要的是這個:html
rootValue
(Number)vue
還有一些其餘的配置:java
propList
(Array) 須要作單位轉化的屬性.git
minPixelValue
(Number) 能夠被替換的最小像素.unitPrecision
(Number) rem單位的小數位數上限.完整的能夠看官方文檔github
vue.config.js > .postcssrx.js > postcss.config.js
其中 postcssrc.js
和 postcss.config.js
能夠熱更新, vue.config.js
中作的修改要重啓devServer
npm
vue.config.js
ide
module.exports = { //...其餘配置 css: { loaderOptions: { postcss: { plugins: [ require('postcss-pxtorem')({ rootValue: 192, minPixelValue: 2, propList: ['*'], }) ] } } }, }
.postcssrx.js
佈局
module.exports = { plugins: { 'postcss-pxtorem': { rootValue: 16, minPixelValue: 2, propList: ['*'], } } }
postcss.config.js
module.exports = { plugins: { 'postcss-pxtorem': { rootValue: 192, minPixelValue: 2, propList: ['*'], } } }
官方Github倉庫:postcss-pxtorem
vue3.0中使用postcss-pxtorem
關於vue利用postcss-pxtorem進行移動端適配的問題