Vue中rem與postcss-pxtorem的應用

rem 佈局

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-pxtoremPostCSS的插件,用於將像素單元生成rem單位。

安裝

  1. 新建Vue項目
  2. 安裝 postcss-pxtorem
    npm install postcss-pxtorem --save-dev

配置

能夠經過3個地方來添加配置,配置文件皆位於vue 項目根目錄中,若文件不存在能夠自行創建。css

其中最重要的是這個:html

  • rootValue (Number)vue

    • 根元素的值,即1rem的值
    • 用於設計稿元素尺寸/rootValue
    • 好比 rootValue = 192 時,在css中width: 960px; 最終會換算成width: 5rem;

還有一些其餘的配置:java

  • propList (Array) 須要作單位轉化的屬性.git

    • 必須精確匹配
    • 用 * 來選擇全部屬性. Example: ['*']
    • 在句首和句尾使用 * (['*position*'] 會匹配 background-position-y)
    • 使用 ! 來配置不匹配的屬性. Example: ['*', '!letter-spacing']
    • 組合使用. Example: ['*', '!font*']
  • minPixelValue(Number) 能夠被替換的最小像素.
  • unitPrecision(Number) rem單位的小數位數上限.

完整的能夠看官方文檔github

權重
vue.config.js > .postcssrx.js > postcss.config.js

其中 postcssrc.jspostcss.config.js 能夠熱更新, vue.config.js 中作的修改要重啓devServer
npm


配置示例
  • vue.config.jside

    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: ['*'],
        }
      }
    }

Reference

官方Github倉庫:postcss-pxtorem
vue3.0中使用postcss-pxtorem
關於vue利用postcss-pxtorem進行移動端適配的問題

相關文章
相關標籤/搜索