欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

react自適應(yīng)布局px轉(zhuǎn)rem實現(xiàn)示例詳解

 更新時間:2023年08月28日 11:59:14   作者:mengyuhang4879  
這篇文章主要為大家介紹了react自適應(yīng)布局px轉(zhuǎn)rem實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在create-react-app項目中配置絕對單位px轉(zhuǎn)換為相對單位rem,其中使用postcss-plugin-px2rem轉(zhuǎn)換css/less/sass文件(此插件不支持內(nèi)聯(lián)樣式轉(zhuǎn)換),使用編寫的loader轉(zhuǎn)換內(nèi)聯(lián)樣式

1.安裝插件

npm i postcss-plugin-px2rem

2.配置webpack

1 找到config/webpack.config.js里postcss-loader,增加以下代碼

[
                                  'postcss-plugin-px2rem',
                                  {
                                      rootValue: 16,//這是基準(zhǔn)根元素的大小,用于計算 rem 單位。例如,如果你的 HTML 根元素的 font-size 設(shè)置為 16px,那么設(shè)置 rootValue 為 16 將會將 16px 轉(zhuǎn)換為 1rem
                                      unitPrecision: 5,//轉(zhuǎn)換后的 rem 值的小數(shù)點位數(shù)。例如,如果設(shè)置為 5,那么轉(zhuǎn)換后的 rem 值會保留小數(shù)點后的五位
                                      propWhiteList: [],//哪些屬性會被轉(zhuǎn)換,不填則是都轉(zhuǎn)換
                                      propBlackList: [],//哪些屬性不會被轉(zhuǎn)換
                                      exclude: ['/node_modules/'],//排除文件
                                      selectorBlackList: ['noRem'], //定義了哪些選擇器不會被轉(zhuǎn)換。例如,['noRem'] 表示帶有類名為 noRem 的選擇器不會被轉(zhuǎn)換。
                                      ignoreIdentifier: false,// 是否忽略選擇器中的標(biāo)識符。設(shè)置為 false 將會處理選擇器中的標(biāo)識符
                                      replace: true,// 是否替換原始的像素值為轉(zhuǎn)換后的 rem 值。
                                      mediaQuery: false,//是否在媒體查詢中也進(jìn)行轉(zhuǎn)換
                                      minPixelValue: 0// 最小的像素值,小于這個值的像素值將不會被轉(zhuǎn)換。
                                  }
                              ]

這樣就完成了對非內(nèi)聯(lián)樣式的轉(zhuǎn)換

3.編寫自定義loader轉(zhuǎn)換內(nèi)聯(lián)樣式

pxToRemLoader代碼

module.exports = function(content, map, meta) {
  // let reg = /(\d+(\\.\d+)?)px/g
  let reg = /(?<num1>\d+)\.?(?<num2>\d+)?px/g  // 匹配所有px 相關(guān)的字符
  let content1 = content.replace(reg,function(...data){ // px 轉(zhuǎn)換為帶小數(shù)的rem
      var arr = data[data.length-1]
      var num1=0, num2=0;
      if(arr.num1)num1=parseFloat(arr.num1)
      if(arr.num2)num2=parseFloat(arr.num2)
      return  parseFloat(num1+'.'+num2)/16 + 'rem' // 這里以16px 為pc端轉(zhuǎn)換基數(shù) 適配1920分辨率
  })
  return content1
};

webpack修改原有配置

{
                          test: /\.(js|mjs|jsx|ts|tsx)$/,
                          include: paths.appSrc,
                          use: [
                              {
                                  loader: require.resolve("babel-loader"),
                                  options: {
                                      customize: require.resolve(
                                          "babel-preset-react-app/webpack-overrides"
                                      ),
                                      presets: [
                                          [
                                              require.resolve("babel-preset-react-app"),
                                              {
                                                  runtime: hasJsxRuntime ? "automatic" : "classic",
                                              },
                                          ],
                                      ],
                                      plugins: [
                                          isEnvDevelopment &&
                                          shouldUseReactRefresh &&
                                          require.resolve("react-refresh/babel"),
                                      ].filter(Boolean),
                                      // This is a feature of `babel-loader` for webpack (not Babel itself).
                                      // It enables caching results in ./node_modules/.cache/babel-loader/
                                      // directory for faster rebuilds.
                                      cacheDirectory: true,
                                      // See #6846 for context on why cacheCompression is disabled
                                      cacheCompression: false,
                                      compact: isEnvProduction,
                                  },
                              },
                              {
                                  loader: path.resolve('./config/webpack/loader/pxToRemLoader.js')
                              }
                          ]
                      },

借鑒:

http://www.dbjr.com.cn/javascript/296510a17.htm

http://www.dbjr.com.cn/article/211204.htm

以上就是react自適應(yīng)布局px轉(zhuǎn)rem實現(xiàn)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于react自適應(yīng)布局px轉(zhuǎn)rem的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React Native AsyncStorage本地存儲工具類

    React Native AsyncStorage本地存儲工具類

    這篇文章主要為大家分享了React Native AsyncStorage本地存儲工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • React?forwardRef?用法案例分析

    React?forwardRef?用法案例分析

    這篇文章主要介紹了React forwardRef用法,forwardRef允許你的組件使用ref將一個DOM節(jié)點暴露給父組件,本文結(jié)合案例分析給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • create-react-app使用antd按需加載的樣式無效問題的解決

    create-react-app使用antd按需加載的樣式無效問題的解決

    這篇文章主要介紹了create-react-app使用antd按需加載的樣式無效問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • react為什么不推薦使用index作為key

    react為什么不推薦使用index作為key

    本文主要介紹了react為什么不推薦使用index作為key,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • react搭建在線編輯html的站點通過引入grapes實現(xiàn)在線拖拉拽編輯html

    react搭建在線編輯html的站點通過引入grapes實現(xiàn)在線拖拉拽編輯html

    Grapes插件是一種用于Web開發(fā)的開源工具,可以幫助用戶快速創(chuàng)建動態(tài)和交互式的網(wǎng)頁元素,它還支持多語言和多瀏覽器,適合開發(fā)響應(yīng)式網(wǎng)頁和移動應(yīng)用程序,這篇文章主要介紹了react搭建在線編輯html的站點通過引入grapes實現(xiàn)在線拖拉拽編輯html,需要的朋友可以參考下
    2023-08-08
  • react.js 翻頁插件實例代碼

    react.js 翻頁插件實例代碼

    這篇文章主要介紹了react.js 翻頁插件實例代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-01-01
  • react實現(xiàn)每隔60s刷新一次接口的示例代碼

    react實現(xiàn)每隔60s刷新一次接口的示例代碼

    本文主要介紹了react實現(xiàn)每隔60s刷新一次接口的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • React中使用async validator進(jìn)行表單驗證的實例代碼

    React中使用async validator進(jìn)行表單驗證的實例代碼

    react上進(jìn)行表單驗證是很繁瑣的,在這里使用async-validator處理起來就變的很方便了,接下來通過本文給大家介紹React中使用async validator進(jìn)行表單驗證的方法,需要的朋友可以參考下
    2018-08-08
  • 關(guān)于react的代理配置(可配置多個代理)

    關(guān)于react的代理配置(可配置多個代理)

    這篇文章主要介紹了關(guān)于react的代理配置(可配置多個代理),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 基于Webpack5 Module Federation的業(yè)務(wù)解耦實踐示例

    基于Webpack5 Module Federation的業(yè)務(wù)解耦實踐示例

    這篇文章主要為大家介紹了基于Webpack5 Module Federation的業(yè)務(wù)解耦實踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評論