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

postcss-pxtorem實(shí)現(xiàn)頁(yè)面自適應(yīng)的原理解析

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

經(jīng)過(guò)這個(gè)插件轉(zhuǎn)化之后變成
假設(shè)變成下面這樣哈

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

其他沒(méi)啥子太大作用

下面請(qǐng)?jiān)试S我跑題講講其他的知識(shí)
比如 750的設(shè)計(jì)稿上 有寬度 375px寬度的元素 那么它就會(huì)占用設(shè)備寬度的一半
如果這個(gè)設(shè)計(jì)到了 375px的設(shè)備上 我們?cè)僭O(shè)置 375px的話 那就會(huì)占滿整個(gè)設(shè)備了。

那么問(wèn)題來(lái)了 有沒(méi)有什么單位 可以讓我在這兩上面實(shí)現(xiàn)同樣的效果呢
當(dāng)然有了。我們直接設(shè)置 百分之50不就行了嘛

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

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

舉個(gè)例子哈 750上面 假設(shè) 1rem = 100px
那么要想實(shí)現(xiàn)同樣的效果那么 我們?cè)?375設(shè)備上 就需要 1rem = 50px

這個(gè)怎么做到呢 我們就通過(guò)調(diào)整 根元素的字體大小來(lái)來(lái)實(shí)現(xiàn)

在750設(shè)備上

htmlDom.style.fontSize = 100 + 'px'

在 375設(shè)備上

htmlDom.style.fontSize = 50 + 'px'

有童鞋會(huì)有疑問(wèn) 那么我其他的設(shè)備 怎么辦 總不能一個(gè)設(shè)備寫(xiě)一個(gè)這個(gè)吧
嘿嘿 這樣就需要引入一個(gè) 比例了 我們固定好一個(gè)比例 根據(jù)我們?cè)O(shè)計(jì)稿的寬度尺寸
比如是 750的 那么scale比例就是

假設(shè) 100px = 1rem 那么 750px 就是 7.5rem了

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

這樣話 在375的設(shè)備上就是

// 輸出 50px

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

如果設(shè)備寬度是 420,那么

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

上面其實(shí)我們可以提取出來(lái)一個(gè)專門(mén)處理的函數(shù)

// 按照設(shè)計(jì)稿 375px計(jì)算  1rem 16px 那么 如果設(shè)備是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哈 我們?cè)谠O(shè)計(jì)的時(shí)候總不能自己一直在哪里算吧 如果,比如 設(shè)計(jì)稿寬度 20px 我們還需要自己去手寫(xiě)或者計(jì)算多少rem 多費(fèi)時(shí)間啊
那么有沒(méi)有一個(gè)插件 我們可以自己手寫(xiě)px它自動(dòng)根據(jù)我們?cè)O(shè)置的給轉(zhuǎn)化成rem這樣多爽
那么它來(lái)了
怎么用呢。和webpack一樣需要我們安裝一些東西哈
首先在我們的html文件目錄下 (我這個(gè)可不是基于webpack哈)

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

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

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

在package.json文件配置下

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

運(yùn)行 npm run build
在src/style.css

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

看下效果哈

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

相關(guān)文章

  • JS+canvas實(shí)現(xiàn)的五子棋游戲【人機(jī)大戰(zhàn)版】

    JS+canvas實(shí)現(xiàn)的五子棋游戲【人機(jī)大戰(zhàn)版】

    這篇文章主要介紹了JS+canvas實(shí)現(xiàn)的五子棋游戲,是采用比較強(qiáng)的AI實(shí)現(xiàn)的人機(jī)大戰(zhàn)版游戲,涉及javascript結(jié)合HTML5實(shí)現(xiàn)圖形繪制與人工智能相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • js求數(shù)組最大值的八種具體實(shí)現(xiàn)方法

    js求數(shù)組最大值的八種具體實(shí)現(xiàn)方法

    數(shù)組如何求最大值,想必很多的朋友都不會(huì)吧,下面這篇文章主要給大家介紹了關(guān)于使用js求數(shù)組最大值的八種方法具體實(shí)現(xiàn)的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-09-09
  • js函數(shù)的延遲加載實(shí)現(xiàn)代碼

    js函數(shù)的延遲加載實(shí)現(xiàn)代碼

    延遲加載的函數(shù),第一次調(diào)用后,會(huì)覆蓋原來(lái)的老函數(shù),以后再次調(diào)用的是新函數(shù),不會(huì)再進(jìn)行條件的判斷,提升效率
    2012-10-10
  • javascript面向?qū)ο笾x成員方法實(shí)例分析

    javascript面向?qū)ο笾x成員方法實(shí)例分析

    這篇文章主要介紹了javascript面向?qū)ο笾x成員方法,實(shí)例分析了成員方法的定義與使用技巧,需要的朋友可以參考下
    2015-01-01
  • echarts安裝與配置

    echarts安裝與配置

    這篇文章介紹了echarts安裝與配置的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • JS判斷變量是否為空判斷是否null

    JS判斷變量是否為空判斷是否null

    本節(jié)主要介紹了JS判斷變量是否為空是否null的方法,需要的朋友可以參考下
    2014-07-07
  • uni-app實(shí)現(xiàn)數(shù)據(jù)下拉刷新功能實(shí)例

    uni-app實(shí)現(xiàn)數(shù)據(jù)下拉刷新功能實(shí)例

    很多列表頁(yè)總數(shù)量很大,一次性查詢加載會(huì)導(dǎo)致頁(yè)面有很長(zhǎng)時(shí)間的空白期,自然體驗(yàn)感極差,就會(huì)使用分頁(yè)加載數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于uni-app實(shí)現(xiàn)數(shù)據(jù)下拉刷新功能實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • javascript跟隨滾動(dòng)條滾動(dòng)的層(浮動(dòng)AD效果)

    javascript跟隨滾動(dòng)條滾動(dòng)的層(浮動(dòng)AD效果)

    javascript跟隨滾動(dòng)條滾動(dòng)的層(浮動(dòng)AD效果)...
    2007-08-08
  • js圖片處理示例代碼

    js圖片處理示例代碼

    這篇文章主要介紹了js圖片處理過(guò)程中的一個(gè)示例,需要的朋友可以參考下
    2014-05-05
  • 詳解JavaScript中Arguments對(duì)象用途

    詳解JavaScript中Arguments對(duì)象用途

    本文主要介紹了詳解JavaScript中Arguments對(duì)象用途,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論