国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

移動端布局之動態rem的實現

2024-07-11 08:59:59
字體:
來源:轉載
供稿:網友

動態rem

1. 首先我們先介紹當下的長度單位

px 像素

em 一個M的寬度 / 一個漢字的寬度 1em == 自身的 font-size

rem 全稱 root em 是根元素(html)的 font-size

vh 全稱 viewport height 100vh == 視口高度

vw 全程 viewport width 100vw == 視口寬度

因為網頁的默認font-size: 16px 所以1rem默認是 16px chrome 的最小字體像素默認是 12px

一個元素在沒有設置font-size的情況下會去繼承父元素的font-size

2. 移動端的布局

移動端的布局一般就兩種

  • 一是整體縮放
  • 二是百分比布局

 先說整體縮放

整體縮放,其實就是將pc端的網頁縮小到手機端屏幕能看到網頁全貌的大小

蘋果手機剛出來時就是使用這種布局,蘋果公司研究發現世界上大多數的網頁寬度是980px,然而蘋果手機的寬度像素是320px,所以蘋果手機的瀏覽器用320像素的屏幕寬度去模擬980px的寬度,實現了整體縮放

為了看到效果,要將 <meta name="viewport"> 這一部分刪除

 <style>        div{            width:980px;            margin:0 auto;            background:#f0f0f0;        }        ul{            list-style:none;        }        li{            float:left;            margin-left:10px;            }        clearfix::after{            content:"";            display:block;            clear:both;        }    </style></head><body>    <div>        <ul>            <li>選項1</li>            <li>選項2</li>            <li>選項3</li>            <li>選項4</li>            <li>選項5</li>            <li>選項6</li>        </ul>    </div></body>

但這種整體縮放的用戶體驗并不好,所以pass,我們來講百分比布局

百分比布局

//百分比布局<style>        .child{            background-color:#ccc;            text-align:center;            width:40%;            margin:10px 5%;            float:left;        }        .clearfix::after{            content:"";            display:block;            clear:both;        }    </style></head><body>    <div class="parent clearfix">        <div class="child">選項1</div>        <div class="child">選項2</div>        <div class="child">選項3</div>        <div class="child">選項4</div>    </div></body>

可以看到百分比布局能自動適應屏幕寬度。

但是百分比布局有個缺點,寬度和高度不能做任何關聯

可以看上面的gif圖,寬度一直變長,然而高度沒有變化

為了讓選項方塊的高度是寬度的一半,實現該效果我們需要知道屏幕的寬度,再來確定選項的寬度和高度

這里可以使用vw,但vw的兼容性比較差,我們可以使用rem來代替vw

首先rem是以html的font-size為基準的,所以我們可以讓html的font-size==pageWidth

<script>	let pageWidth = window.innerWidth;    document.write('<style>html{font-size:'+ pageWidth/10 +'px}</style>')</script>

為了更好的使用rem,這里1rem等于屏幕寬度的10分之1。注意不能做到1rem==屏幕的百分之1。因為瀏覽器的最小 font-size是12px ;

按如上改動代碼

<style>.child{            background-color:#ccc;            text-align:center;            width:4rem;            height:2rem;            margin:10px 0.05rem;            float:left;            line-height:2rem;        }        .clearfix::after{            content:"";            display:block;            clear:both;        }</style></head><body>    <div class="parent clearfix">        <div class="child">選項1</div>        <div class="child">選項2</div>        <div class="child">選項3</div>        <div class="child">選項4</div>    </div></body>

效果入圖

可以看到寬度和高度都能按百分比變化了,但是我們會發現一個很麻煩的東西,設計師給我們的設計稿,我們卻必須把每個元素的像素單位換算為rem。這里我們就要scss來換算px了

3.scss動態換算px

@function pxToRem($px){    @return $px/$designWidth*10+rem;//10是把整個屏幕分為10rem}$designWidth:320;//設計稿寬度.child{    background-color:#ccc;    text-align:center;    width:pxToRem(128);//4rem;    height:pxToRem(64);//2rem;    margin: 10px pxToRem(1.6);    float:left;    line-height:pxToRem(64);}.clearfix::after{    content:"";    display:block;    clear:both;}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广昌县| 汽车| 通化县| 博白县| 内乡县| 松溪县| 共和县| 信阳市| 天峻县| 喀什市| 多伦县| 德阳市| 上栗县| 长宁区| 达孜县| 鄂州市| 旬邑县| 精河县| 天等县| 孟津县| 嵊州市| 高雄县| 海丰县| 南汇区| 苏尼特右旗| 安龙县| 娄烦县| 汝州市| 仙游县| 巴塘县| 太原市| 南通市| 皮山县| 县级市| 金堂县| 杭州市| 卢氏县| 沙雅县| 清涧县| 镇安县| 清远市|