React 18版本配置rem 和 vw的詳細(xì)步驟
React 18版本配置rem 和 vw
經(jīng)過無數(shù)次的實驗最終發(fā)現(xiàn)兼容性比較好的方案是配置webpack.config.js
第一步:
npm install lib-flexible postcss-pxtorem yarn add lib-flexible postcss-pxtorem
第二步:
接下來直接解包-- yarn eject npm run eject
第三步:
這一步也是最關(guān)鍵的一補我們需要配置一下loader 解包后,可以看到項目目錄下多了一個 config 文件夾。打開 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è)計圖最大寬度除以10 //比如750的寬就寫成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è)計圖最大寬度除以10 //比如750的寬就寫成75 我這邊是1125的寬 selectorBlackList: [], propList: ['*'], exclude: /node_modules/i } ] /* -------添加上面這一段------------------------------------------------------------ */ ], }, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, }, }, ] 注意:這里的 rootValue: 112.5 的意思就是1rem = 112.5px 這個是根據(jù)1125px設(shè)計稿來的!
第四步
在 入口文件 index.js 里引入 lib-flexible: import 'lib-flexible'
重啟項目文件
npm run start 或者 yarn start
兼容ipad
但是,當(dāng)你點開ipad時,會發(fā)現(xiàn)盒子兼容出了問題,這是因為淘寶彈性布局方案lib-flexible不兼容ipad和ipad pro。我們這里給出解決方案:
在public>index.html的head標(biāo)簽中添加:
這樣,我們就解決ipad的兼容問題了。
7、修改meta標(biāo)簽
這樣,我們 rem 的配置就算全部完成了?,F(xiàn)在就可以根據(jù)設(shè)計稿的大小寫樣式啦,不用轉(zhuǎn)換~~~ 設(shè)計稿的尺寸寫的是多少直接C/V過來就好了,不需要轉(zhuǎn)換更改
二vw
第一步:
vw 的配置會比 rem 簡單很多,前面的基本相同,就后面不需要在配置兼容ipad這些之類的
1、安裝依賴包 npm i postcss-px-to-viewport --save-dev 或者 yarn add postcss-px-to-viewport --save-dev 2、解包 這一步和上面配置 rem 的一樣,先提交倉庫在解包 git add . git commit -m 'eject之前的提交' 解包 yarn eject npm run eject
第二步:
配置loader
解包后打開 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è)計圖的大小 viewportHeight: 1000, // 視口高度,根據(jù)設(shè)計圖的大小 unitPrecision: 6,// 保留小數(shù)點 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è)計圖的大小 viewportHeight: 1000, // 視口高度,根據(jù)設(shè)計圖的大小 unitPrecision: 6,// 保留小數(shù)點 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)容請搜索腳本之家以前的文章或繼續(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的原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02react中將html字符串渲染到頁面的實現(xiàn)方式
這篇文章主要介紹了react中將html字符串渲染到頁面的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12如何應(yīng)用?SOLID?原則在?React?中整理代碼之開閉原則
React?不是面向?qū)ο?,但這些原則背后的主要思想可能是有幫助的,在本文中,我將嘗試演示如何應(yīng)用這些原則來編寫更好的代碼,對React?SOLID原則開閉原則相關(guān)知識感興趣的朋友一起看看吧2022-07-07基于React實現(xiàn)調(diào)用式Modal組件的全流程
本文基于 nextUI 和 tailwindCSS 實現(xiàn)調(diào)用式 Modal 組件的封裝,文中通過圖文結(jié)合的方式和代碼示例介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2024-12-1230行代碼實現(xiàn)React雙向綁定hook的示例代碼
本文主要介紹了30行代碼實現(xiàn)React雙向綁定hook的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04