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

postcss-pxtorem實現頁面自適應的原理解析

 更新時間:2023年12月08日 11:56:16   作者:yunchong_zhao  
postcss-pxtorem是一個PostCSS插件,用于將CSS中的像素值轉換為rem單位,以實現響應式布局和適配不同屏幕尺寸的需求,本文給大家介紹postcss-pxtorem實現頁面自適應的原理解析,感興趣的朋友一起看看吧
  • 先聲明一點這玩意本身不能實現哈,他只是一個工具,更是一個postcss的插件 幫助我們從px轉化成為rem
  • 比如我們的代碼
div {
	height: 100px;
	width: 100px;
}

經過這個插件轉化之后變成
假設變成下面這樣哈

div {
	height: 1rem;
	width: 1rem;
}

其他沒啥子太大作用

下面請允許我跑題講講其他的知識
比如 750的設計稿上 有寬度 375px寬度的元素 那么它就會占用設備寬度的一半
如果這個設計到了 375px的設備上 我們再設置 375px的話 那就會占滿整個設備了。

那么問題來了 有沒有什么單位 可以讓我在這兩上面實現同樣的效果呢
當然有了。我們直接設置 百分之50不就行了嘛

聰明的boy,但是今天不說這個百分比寬度 也不說那個視口寬度單位
今天講rem這個單位
rem 是 CSS 中的一個長度單位,全稱是 “root em”。它是相對于根元素(即HTML元素)的字體大小來計算的。例如,如果 HTML 元素的字體大小是 16px,那么 1rem 就等于 16px。如果 HTML 元素的字體大小改變,那么使用 rem 作為單位的元素的大小也會相應地改變。

看了上面介紹 我在想 我們可不可以這樣做
在750px設計稿上 設置一個 1rem寬度的元素。跑到375px上面也是1rem但是他倆的展示效果是一樣的

舉個例子哈 750上面 假設 1rem = 100px
那么要想實現同樣的效果那么 我們在 375設備上 就需要 1rem = 50px

這個怎么做到呢 我們就通過調整 根元素的字體大小來來實現

在750設備上

htmlDom.style.fontSize = 100 + 'px'

在 375設備上

htmlDom.style.fontSize = 50 + 'px'

有童鞋會有疑問 那么我其他的設備 怎么辦 總不能一個設備寫一個這個吧
嘿嘿 這樣就需要引入一個 比例了 我們固定好一個比例 根據我們設計稿的寬度尺寸
比如是 750的 那么scale比例就是

假設 100px = 1rem 那么 750px 就是 7.5rem了

 const scale = 750 / 100
 console.log(scale) // 輸出 7.5

這樣話 在375的設備上就是

// 輸出 50px

htmlDom.style.fontSize = 375 / 7.5 + 'px' 

如果設備寬度是 420,那么

htmlDom.style.fontSize = 420 / 7.5 + 'px' = '56px'

上面其實我們可以提取出來一個專門處理的函數

// 按照設計稿 375px計算  1rem 16px 那么 如果設備是750px的話 那么 1rem就是 32px
        function setRem(designWidth = 750) {
            const scale = designWidth / 100
            const htmlDom = document.querySelector('html')
            const htmlWidth = document.documentElement.clientWidth || document.body.clientWidth
            htmlDom.style.fontSize = htmlWidth / scale + 'px'
        }
        window.onload = function() {
            setRem()
        }
        window.onresize = function() {
            setRem()
        }

重新回到我們的postcss-pxtorem哈 我們在設計的時候總不能自己一直在哪里算吧 如果,比如 設計稿寬度 20px 我們還需要自己去手寫或者計算多少rem 多費時間啊
那么有沒有一個插件 我們可以自己手寫px它自動根據我們設置的給轉化成rem這樣多爽
那么它來了
怎么用呢。和webpack一樣需要我們安裝一些東西哈
首先在我們的html文件目錄下 (我這個可不是基于webpack哈)

npm init -y
npm i postcss postcss-cli -D
npm i postcss-pxtorem -S

然后在package.json同級別目錄下創(chuàng)建一個 postcss.config.js

module.exports = {
    plugins: [
      require('postcss-pxtorem')({
        rootValue: 100,
        propList: ['*'],
        minPixelValue: 2 // 設置最小的轉換數值,如果為1的話,只有2px以上的值才會被轉換
      }),
      // 其他插件...
    ],
  };

在package.json文件配置下

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "postcss src/style.css -o dist/style.css"
  },

運行 npm run build
在src/style.css

div {
    height: 200px;
    width: 200px;
    background-color: #f00;
}
div p {
    height: 1px;
    width:  1px;
}

看下效果哈

到此這篇關于postcss-pxtorem實現頁面自適應的原理的文章就介紹到這了,更多相關postcss-pxtorem頁面自適應內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js實現九宮格布局效果

    js實現九宮格布局效果

    這篇文章主要為大家詳細介紹了js實現九宮格布局效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 判斷數組的最佳方法(推薦)

    判斷數組的最佳方法(推薦)

    下面小編就為大家?guī)硪黄猨s判斷數組的最佳方法(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Javascript基于jQuery UI實現選中區(qū)域拖拽效果

    Javascript基于jQuery UI實現選中區(qū)域拖拽效果

    這篇文章主要介紹了Javascript基于jQuery UI實現選中區(qū)域拖拽效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • es6 super關鍵字的理解與應用實例分析

    es6 super關鍵字的理解與應用實例分析

    這篇文章主要介紹了es6 super關鍵字的理解與應用,結合實例形式分析了es6 super關鍵字的功能、原理、用法及相關操作注意事項,需要的朋友可以參考下
    2020-02-02
  • label+input實現按鈕開關切換效果的實例

    label+input實現按鈕開關切換效果的實例

    下面小編就為大家?guī)硪黄猯abel+input實現按鈕開關切換效果的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • js實現仿愛微網兩級導航菜單效果代碼

    js實現仿愛微網兩級導航菜單效果代碼

    這篇文章主要介紹了js實現仿愛微網兩級導航菜單效果代碼,通過javascript自定義函數結合鼠標點擊事件實現tab切換的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • 使用Promise和JavaScript有效處理1000個請求的方法

    使用Promise和JavaScript有效處理1000個請求的方法

    在現代Web開發(fā)中,處理高并發(fā)請求是一個常見的挑戰(zhàn),當我們需要從服務器獲取大量數據或執(zhí)行多個異步任務時,如何有效地管理請求的并發(fā)性和性能變得至關重要,本文將介紹如何使用Promise和JavaScript來管理高并發(fā)請求,需要的朋友可以參考下
    2023-09-09
  • javascript 防止刷新,后退,關閉

    javascript 防止刷新,后退,關閉

    常常會用到的停留頁面的操作.兼容IE,FF.實現代碼如下。
    2010-08-08
  • 淺談在fetch方法中添加header后遇到的預檢請求問題

    淺談在fetch方法中添加header后遇到的預檢請求問題

    下面小編就為大家?guī)硪黄獪\談在fetch方法中添加header后遇到的預檢請求問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • JS關于?replace?取值、替換第幾個匹配項問題小結

    JS關于?replace?取值、替換第幾個匹配項問題小結

    這篇文章主要介紹了JS關于replace取值、替換第幾個匹配項,本文針對字符串的替換、截取知識點做詳細介紹,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

延寿县| 高邑县| 长泰县| 伊通| 大埔县| 航空| 潞西市| 疏附县| 赫章县| 沅江市| 万山特区| 洪雅县| 雷州市| 平度市| 清苑县| 阿克| 香港 | 中西区| 敦化市| 凉城县| 大方县| 兴隆县| 五指山市| 澄迈县| 无为县| 得荣县| 东丽区| 全椒县| 田阳县| 沁水县| 南京市| 米易县| 长顺县| 宽城| 稻城县| 明星| 蓬莱市| 嵊泗县| 荥经县| 田阳县| 泉州市|