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

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

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

引言

在create-react-app項(xiàng)目中配置絕對(duì)單位px轉(zhuǎn)換為相對(duì)單位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)根元素的大小,用于計(jì)算 rem 單位。例如,如果你的 HTML 根元素的 font-size 設(shè)置為 16px,那么設(shè)置 rootValue 為 16 將會(huì)將 16px 轉(zhuǎn)換為 1rem
                                      unitPrecision: 5,//轉(zhuǎn)換后的 rem 值的小數(shù)點(diǎn)位數(shù)。例如,如果設(shè)置為 5,那么轉(zhuǎn)換后的 rem 值會(huì)保留小數(shù)點(diǎn)后的五位
                                      propWhiteList: [],//哪些屬性會(huì)被轉(zhuǎn)換,不填則是都轉(zhuǎn)換
                                      propBlackList: [],//哪些屬性不會(huì)被轉(zhuǎn)換
                                      exclude: ['/node_modules/'],//排除文件
                                      selectorBlackList: ['noRem'], //定義了哪些選擇器不會(huì)被轉(zhuǎn)換。例如,['noRem'] 表示帶有類名為 noRem 的選擇器不會(huì)被轉(zhuǎn)換。
                                      ignoreIdentifier: false,// 是否忽略選擇器中的標(biāo)識(shí)符。設(shè)置為 false 將會(huì)處理選擇器中的標(biāo)識(shí)符
                                      replace: true,// 是否替換原始的像素值為轉(zhuǎn)換后的 rem 值。
                                      mediaQuery: false,//是否在媒體查詢中也進(jìn)行轉(zhuǎn)換
                                      minPixelValue: 0// 最小的像素值,小于這個(gè)值的像素值將不會(huì)被轉(zhuǎn)換。
                                  }
                              ]

這樣就完成了對(duì)非內(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.fzitv.net/javascript/296510a17.htm

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

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

相關(guān)文章

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

    React中swiper的配置(reactjs-swiper)

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

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

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

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

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

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

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

    React-hooks中的useEffect使用步驟

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

    react實(shí)現(xiàn)動(dòng)態(tài)表單

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

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

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

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

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

    React中的生命周期用法詳解

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

    React Native設(shè)備信息查看調(diào)試詳解

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

最新評(píng)論

朝阳区| 册亨县| 鹤壁市| 阳信县| 汉川市| 榆社县| 赫章县| 宣威市| 白沙| 资阳市| 滕州市| 永寿县| 阿勒泰市| 永宁县| 隆德县| 哈密市| 盐源县| 应城市| 霍州市| 新沂市| 阳高县| 道真| 沅陵县| 江山市| 海原县| 平南县| 屏南县| 宁海县| 涞水县| 德格县| 红桥区| 海宁市| 增城市| 鹤庆县| 顺昌县| 手游| 宝鸡市| 长治县| 徐汇区| 封丘县| 紫金县|