px批量轉vw方法,適用於用戶臨時突發自適應需求,快速搞出項目多屏幕適應方案postcss-px-to-viewport,postcss.config.js配置

方案一:

1. 下載依賴

npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev 
npm install postcss-px-to-viewport-opt

2. 根目錄下新建postcss.config.js,配置以下

// https://github.com/michael-ciniawsky/postcss-load-config

// module.exports = {
//   'plugins': {
//     // to edit target browsers: use "browserslist" field in package.json
//     'autoprefixer': {}
//   }
// }
module.exports = {
  plugins: {
    'autoprefixer': {
      path: ['./src/*']
    },
    'postcss-import': {},
    'postcss-px-to-viewport-opt': {
      'viewportWidth': '1920', // 視窗的寬度,對應的是咱們設計稿的寬度
      'viewportHeight': '1080', // 視窗的高度
      'unitPrecision': 4, // 指定`px`轉換爲視窗單位值的小數位數(不少時候沒法整除)
      'viewportUnit': 'vw', // 指定須要轉換成的視窗單位,建議使用vw
      'selectorBlackList': ['#nprogress'], // 指定不轉換爲視窗單位的類
      'minPixelValue': 1, // 小於或等於`1px`不轉換爲視窗單位
      'mediaQuery': false, // 容許在媒體查詢中轉換`px`
      'exclude': /(\/|\\)(node_modules)(\/|\\)/,
      'include': ['src/views/webgl/DashBoard.vue']
    }
  }
};

附: 網上找的其餘的配置,能夠參考裏邊的忽略文件寫法,不得不誇一下,掘金的複製粘貼功能很好用

//postcss.config.js文件
module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', //須要轉換的單位,默認爲"px"
      viewportWidth: 375, // 視窗的寬度,對應的是咱們設計稿的寬度
      viewportHeight: 1334,//視窗的高度,根據375設備的寬度來指定,通常指定667,也能夠不配置
      unitPrecision: 13, // 指定`px`轉換爲視窗單位值的小數位數(不少時候沒法整除)
      propList: ['*'], // 能轉化爲vw的屬性列表
      viewportUnit: 'vw', // 指定須要轉換成的視窗單位,建議使用vw
      fontViewportUnit: 'vw', //字體使用的視口單位
      selectorBlackList: ['.ignore-', '.hairlines'], //指定不轉換爲視窗單位的類,能夠自定義,能夠無限添加,建議定義一至兩個通用的類名
      minPixelValue: 1, // 小於或等於`1px`不轉換爲視窗單位,你也能夠設置爲你想要的值
      mediaQuery: false, // 容許在媒體查詢中轉換`px`
      replace: true, //是否直接更換屬性值,而不添加備用屬性
      exclude: [
        /RightBar/,
        /gotop.vue/,
      ], //忽略某些文件夾下的文件或特定文件,例如 'node_modules' 下的文件
      landscape: false, //是否添加根據 landscapeWidth 生成的媒體查詢條件 @media (orientation: landscape)
      landscapeUnit: 'vw', //橫屏時使用的單位
      landscapeWidth: 1134 //橫屏時使用的視口寬度
    }
  }
}

3.首先聲明個人vue-cli中package-lock.json寫的webpack版本是4.28.4,看一下package.json,通常安裝報錯Error: true is not a PostCSS plugin時候,能夠加這個到package.json裏解決

"peerDependencies": {
    "postcss": "^8.0.0"
  },

方案二:

1.安裝

npm i postcss-px-to-viewport -D

2. vue.config.js中配置postcss節點,優先級最高

const pxtovw = require('postcss-px-to-viewport');

module.exports={
    css:{
        loaderOptions:{
            sass:{
                //給sass-loader傳遞選項
            },
            css:{
                //給css-loader傳遞選項
            },
            postcss:{
                //給postcss-loader傳遞選項
                plugins:[
                    new pxtovw({
                        unitToConvert: 'px', //須要轉換的單位,默認爲"px";
					    viewportWidth: 375, //設計稿的視口寬度
					    unitPrecision: 5, //單位轉換後保留的小數位數
					    propList: ['*'], //要進行轉換的屬性列表,*表示匹配全部,!表示不轉換
					    viewportUnit: 'vw', //轉換後的視口單位
					    fontViewportUnit: 'vw', //轉換後字體使用的視口單位
					    selectorBlackList: [], //不進行轉換的css選擇器,繼續使用原有單位
					    minPixelValue: 1, //設置最小的轉換數值
					    mediaQuery: false, //設置媒體查詢裏的單位是否須要轉換單位
					    replace: true, //是否直接更換屬性值,而不添加備用屬性
					    exclude: [/node_modules/] //忽略某些文件夾下的文件
                    })
                ]
            }
        }
    }
}

注意

package.json文件中postcss節點的配置,優先級中

postcss.config.js外置配置文件,優先級最低

相關文章
相關標籤/搜索