關於將px轉換為vw vh的解決方案


什么是vw(Viewport Width)和vh(Viewport Height)?
  vw和vh是前端開發中的一個動態單位,是一個相對於網頁視口的單位。
  系統會將視口的寬度和高度分為100份,1vw占用視口寬度的百分之一,1vh占用視口高度的百分之一。
  vw、vh和百分比不同的是,百分比永遠都是以父元素為參考,而vw、vh是以視口作為參考。

  結論:vw、vh是一個動態的單位,會隨着視口的變化而變化(相對單位)。

我個人在做Vue項目的時候,一邊想用vw、vh進行布局,一邊又覺得px布局方便,因為藍湖上邊的切圖是直接有視圖的px大小。

所以就想如果有一個方案可以解決px轉換為vw vh就太好不過了,我這邊是直接在.postcssrc.js里邊進行配置,下邊是我的代碼,大家可以參考一下,有問題請指出問題

1. npm i postcss-px-to-viewport -D
2. 在項目根目錄下添加.postcssrc.js文件
3. 添加如下配置:

 1 const path = require('path');
 2 
 3 module.exports = ({ file }) => {
 4   const designWidth = file.dirname.includes(path.join('node_modules', 'vant')) ? 375 : 750;
 5 
 6   return {
 7     plugins: {
 8       autoprefixer: {},
 9       "postcss-px-to-viewport": {
10       unitToConvert: "px", // 要轉化的單位
11       viewportWidth: designWidth, // UI設計稿的寬度
12       unitPrecision: 6, // 轉換后的精度,即小數點位數
13       propList: ["*"], // 指定轉換的css屬性的單位,*代表全部css屬性的單位都進行轉換
14       viewportUnit: "vw", // 指定需要轉換成的視窗單位,默認vw
15       fontViewportUnit: "vw", // 指定字體需要轉換成的視窗單位,默認vw
16       selectorBlackList: ["wrap"], // 指定不轉換為視窗單位的類名,
17       minPixelValue: 1, // 默認值1,小於或等於1px則不進行轉換
18       mediaQuery: true, // 是否在媒體查詢的css代碼中也進行轉換,默認false
19       replace: true, // 是否轉換后直接更換屬性值
20       exclude: [/node_modules/], // 設置忽略文件,用正則做目錄名匹配
21       landscape: false // 是否處理橫屏情況
22       }
23     }
24   }
25 
26 }

添加完配置之后需要重新運行

這個方案可以在我的Vue項目中直接把px單位轉換為vw、vh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM