最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

引言

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

1.安裝插件

npm i postcss-plugin-px2rem

2.配置webpack

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

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

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

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

pxToRemLoader代碼

module.exports = function(content, map, meta) {
  // let reg = /(\d+(\\.\d+)?)px/g
  let reg = /(?<num1>\d+)\.?(?<num2>\d+)?px/g  // 匹配所有px 相關的字符
  let content1 = content.replace(reg,function(...data){ // px 轉換為帶小數(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端轉換基數(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://m.fzitv.net/javascript/296510a17.htm

http://m.fzitv.net/article/211204.htm

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

相關文章

  • React中swiper的配置(reactjs-swiper)

    React中swiper的配置(reactjs-swiper)

    本文詳述了在React項目中使用reactjs-swiper組件的步驟與技巧,包括安裝、配置、解決swiperOptions無效問題及組件掛載,下面就來詳細的介紹一下
    2026-06-06
  • React中useEffect依賴數(shù)組的常見陷阱

    React中useEffect依賴數(shù)組的常見陷阱

    本文主要介紹了React中useEffect依賴數(shù)組的常見陷阱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-09-09
  • react電商商品列表的實現(xiàn)流程詳解

    react電商商品列表的實現(xiàn)流程詳解

    這篇文章主要介紹了react實現(xiàn)電商商品列表的流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • React tabIndex使非表單元素支持focus和blur事件

    React tabIndex使非表單元素支持focus和blur事件

    這篇文章主要為大家介紹了React使用tabIndex使非表單元素支持focus和blur事件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • React-hooks中的useEffect使用步驟

    React-hooks中的useEffect使用步驟

    這篇文章主要介紹了React-hooks中的useEffect,對于React組件來說,主作用是根據(jù)數(shù)據(jù)(state/props)渲染UI,除此之外都是副作用(比如手動修改DOM、發(fā)送ajax請求),本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-05-05
  • react實現(xiàn)動態(tài)表單

    react實現(xiàn)動態(tài)表單

    這篇文章主要為大家詳細介紹了react實現(xiàn)動態(tài)表單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 前端必學之完美組件封裝原則(適用react、vue)

    前端必學之完美組件封裝原則(適用react、vue)

    對于當今的前端開發(fā),模塊化已經成了一種通用的解決方案,不管是vue還是React還是Angular,其中都會涉及的組件的封裝,這篇文章主要介紹了前端必學之完美組件封裝原則的相關資料,需要的朋友可以參考下
    2025-09-09
  • React createElement方法使用原理分析介紹

    React createElement方法使用原理分析介紹

    這篇文章主要為大家介紹了React的createElement方法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • React中的生命周期用法詳解

    React中的生命周期用法詳解

    這篇文章主要介紹了React中的生命周期用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • React Native設備信息查看調試詳解

    React Native設備信息查看調試詳解

    這篇文章主要為大家介紹了React Native設備信息查看調試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

潮安县| 孟连| 仪陇县| 孝感市| 乌海市| 阿勒泰市| 乌拉特后旗| 舒兰市| 杭锦后旗| 嘉鱼县| 化隆| 宣城市| 甘泉县| 黔西| 高阳县| 甘南县| 安岳县| 秦安县| 南部县| 黄冈市| 蒙山县| 衡阳县| 尉氏县| 宜阳县| 绥滨县| 凤山市| 类乌齐县| 浮梁县| 九台市| 平罗县| 仁布县| 吉木萨尔县| 绥棱县| 奉化市| 农安县| 疏勒县| 项城市| 宁城县| 安陆市| 桃园市| 广元市|