React 18版本配置rem 和 vw的詳細(xì)步驟
React 18版本配置rem 和 vw
經(jīng)過(guò)無(wú)數(shù)次的實(shí)驗(yàn)最終發(fā)現(xiàn)兼容性比較好的方案是配置webpack.config.js
第一步:
npm install lib-flexible postcss-pxtorem yarn add lib-flexible postcss-pxtorem
第二步:
接下來(lái)直接解包-- yarn eject npm run eject
第三步:
這一步也是最關(guān)鍵的一補(bǔ)我們需要配置一下loader 解包后,可以看到項(xiàng)目目錄下多了一個(gè) config 文件夾。打開(kāi) config/webpack.config.js : 搜索 postcss-loader ,添加:以下內(nèi)容 const loaders = [ ........, { // Options for PostCSS as we reference these options twice // Adds vendor prefixing based on your specified browser support in // package.json loader: require.resolve('postcss-loader'), options: { postcssOptions: { // Necessary for external CSS imports to work // https://github.com/facebook/create-react-app/issues/2677 ident: 'postcss', config: false, plugins: !useTailwind ? [ 'postcss-flexbugs-fixes', [ 'postcss-preset-env', { autoprefixer: { flexbox: 'no-2009', }, stage: 3, }, ], // Adds PostCSS Normalize as the reset css with default options, // so that it honors browserslist config in package.json // which in turn let's users customize the target behavior as per their needs. /* -------添加下面這一段------- -----------------------------------------------------*/ [ 'postcss-pxtorem', { rootValue: 112.5, //設(shè)計(jì)圖最大寬度除以10 //比如750的寬就寫(xiě)成75 我這邊是1125的寬 selectorBlackList: [], propList: ['*'], exclude: /node_modules/i } ], /* -------添加上面這一段------- ------------------------------------------------*/ 'postcss-normalize', ] : [ 'tailwindcss', 'postcss-flexbugs-fixes', [ 'postcss-preset-env', { autoprefixer: { flexbox: 'no-2009', }, stage: 3, }, ], /* -------添加下面這一段------------------------------------------------------------ */ [ 'postcss-pxtorem', { rootValue: 112.5, //設(shè)計(jì)圖最大寬度除以10 //比如750的寬就寫(xiě)成75 我這邊是1125的寬 selectorBlackList: [], propList: ['*'], exclude: /node_modules/i } ] /* -------添加上面這一段------------------------------------------------------------ */ ], }, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, }, }, ] 注意:這里的 rootValue: 112.5 的意思就是1rem = 112.5px 這個(gè)是根據(jù)1125px設(shè)計(jì)稿來(lái)的!
第四步
在 入口文件 index.js 里引入 lib-flexible: import 'lib-flexible'
重啟項(xiàng)目文件
npm run start 或者 yarn start
兼容ipad
但是,當(dāng)你點(diǎn)開(kāi)ipad時(shí),會(huì)發(fā)現(xiàn)盒子兼容出了問(wèn)題,這是因?yàn)樘詫殢椥圆季址桨竘ib-flexible不兼容ipad和ipad pro。我們這里給出解決方案:
在public>index.html的head標(biāo)簽中添加:
這樣,我們就解決ipad的兼容問(wèn)題了。
7、修改meta標(biāo)簽
這樣,我們 rem 的配置就算全部完成了?,F(xiàn)在就可以根據(jù)設(shè)計(jì)稿的大小寫(xiě)樣式啦,不用轉(zhuǎn)換~~~ 設(shè)計(jì)稿的尺寸寫(xiě)的是多少直接C/V過(guò)來(lái)就好了,不需要轉(zhuǎn)換更改
二vw
第一步:
vw 的配置會(huì)比 rem 簡(jiǎn)單很多,前面的基本相同,就后面不需要在配置兼容ipad這些之類的
1、安裝依賴包 npm i postcss-px-to-viewport --save-dev 或者 yarn add postcss-px-to-viewport --save-dev 2、解包 這一步和上面配置 rem 的一樣,先提交倉(cāng)庫(kù)在解包 git add . git commit -m 'eject之前的提交' 解包 yarn eject npm run eject
第二步:
配置loader
解包后打開(kāi) config/webpack.config.js 文件夾,搜索 postcss-loader ,添加:
const loaders = [ ...... { // Options for PostCSS as we reference these options twice // Adds vendor prefixing based on your specified browser support in // package.json loader: require.resolve('postcss-loader'), options: { postcssOptions: { // Necessary for external CSS imports to work // https://github.com/facebook/create-react-app/issues/2677 ident: 'postcss', config: false, plugins: !useTailwind ? [ 'postcss-flexbugs-fixes', [ 'postcss-preset-env', { autoprefixer: { flexbox: 'no-2009', }, stage: 3, }, ], /* -------添加下面這一段------- */ require('postcss-px-to-viewport')({ viewportWidth: 1125, // 視口寬度,根據(jù)設(shè)計(jì)圖的大小 viewportHeight: 1000, // 視口高度,根據(jù)設(shè)計(jì)圖的大小 unitPrecision: 6,// 保留小數(shù)點(diǎn) viewportUnit: 'vw', // 單位 selectorBlackList: [], // 排除的類 minPixelValue: 1, // px的最小單位 mediaQuery: false, // 排除媒體查詢 landscapeUnit: 'vw', // 橫屏單位 fontViewportUnit: 'vw' // 字體屬性單位 }), /* -------添加上面這一段------- */ // Adds PostCSS Normalize as the reset css with default options, // so that it honors browserslist config in package.json // which in turn let's users customize the target behavior as per their needs. 'postcss-normalize', ] : [ 'tailwindcss', 'postcss-flexbugs-fixes', [ 'postcss-preset-env', { autoprefixer: { flexbox: 'no-2009', }, stage: 3, }, ], /* -------添加下面這一段------- */ require('postcss-px-to-viewport')({ viewportWidth: 1125, // 視口寬度,根據(jù)設(shè)計(jì)圖的大小 viewportHeight: 1000, // 視口高度,根據(jù)設(shè)計(jì)圖的大小 unitPrecision: 6,// 保留小數(shù)點(diǎn) viewportUnit: 'vw', // 單位 selectorBlackList: [], // 排除的類 minPixelValue: 1, // px的最小單位 mediaQuery: false, // 排除媒體查詢 landscapeUnit: 'vw', // 橫屏單位 fontViewportUnit: 'vw' // 字體屬性單位 }), /* -------添加上面這一段------- */ ], }, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, }, }, ]
到此這篇關(guān)于React 18版本配置rem 和 vw的文章就介紹到這了,更多相關(guān)React配置rem 和 vw內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React?Hook?Form?優(yōu)雅處理表單使用指南
這篇文章主要為大家介紹了React?Hook?Form?優(yōu)雅處理表單使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析
這篇文章主要介紹了react中關(guān)于函數(shù)調(diào)用()與bind this的原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02react中將html字符串渲染到頁(yè)面的實(shí)現(xiàn)方式
這篇文章主要介紹了react中將html字符串渲染到頁(yè)面的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12如何應(yīng)用?SOLID?原則在?React?中整理代碼之開(kāi)閉原則
React?不是面向?qū)ο螅@些原則背后的主要思想可能是有幫助的,在本文中,我將嘗試演示如何應(yīng)用這些原則來(lái)編寫(xiě)更好的代碼,對(duì)React?SOLID原則開(kāi)閉原則相關(guān)知識(shí)感興趣的朋友一起看看吧2022-07-07基于React實(shí)現(xiàn)調(diào)用式Modal組件的全流程
本文基于 nextUI 和 tailwindCSS 實(shí)現(xiàn)調(diào)用式 Modal 組件的封裝,文中通過(guò)圖文結(jié)合的方式和代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-12-1230行代碼實(shí)現(xiàn)React雙向綁定hook的示例代碼
本文主要介紹了30行代碼實(shí)現(xiàn)React雙向綁定hook的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04