Hanoi(漢諾)塔問題
阿新 • • 發佈:2021-01-11
1 rem與em
rem單位:指的是html元素的font-size的倍數。和em關注父元素不同,rem只關注根元素(html)
<html>---font-size: 20px; 這個就是基準字號
<body>---font-size: 2rem; 計算後是40px,不看父親只看根
<div>----font-size: 2rem; 計算後是40px,不看父親只看根
<p>----font-size: 2rem; 計算後是40px,不看父親只看根
<span>----font-size: 2rem; 計算後是40 px,不看父親只看根
em是相對於父元素的字號
2 rem佈局
rem佈局的本質是等比縮放,一般是基於視口寬度
rem佈局原理:假設我們將螢幕寬度平均分成100份,每一份的寬度用x表示,x=螢幕寬度/100,如果將x作為單位,x前面的數值就代表螢幕寬度的百分比p{width:50x}/*螢幕寬度的50%*/
如果子元素設定rem單位的屬性,通過更改html元素的字型大小,就可以讓子元素實際大小發生改變。
如果讓html元素字型的大小,恆等於螢幕寬度的1/100,那1rem和1x就等價了
css提供了vw和vh,可以表示x單位:1vw=1x
vw--視口寬度的1/100 vh--視口寬度的1/100
3 寬度標準化
根據效果圖的寬度計算rem太煩瑣了,如果1 rem與1px恆等就好了。
工作中,移動端設計師通常為我們提供寬度為320px的設計圖。
為了讓1rem代表1px,我們常常將html根元素的字號定義為100/320vw
即:html{
font-size: 0.3125vw;
}
此時在標準設計圖中,1rem=1px
實現
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" >
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
html {
// 工作中,移動端設計師通常為我們提供寬度為320px的設計圖。其它大小的設計圖也可以更改
//為了讓1rem代表1px,我們常常將html根元素的字號定義為100/320vw
/* 讓1rem=1px 以320px寬度為基準 */
font-size: 0.3125vw;
}
/* 容器 */
.container {
width: 310rem;
margin: 0 auto;
}
.list {
margin-right: -5rem;
}
.box {
width: 100rem;
height: 50rem;
background-color: pink;
margin-right: 5rem;
margin-bottom: 5rem;
float: left;
}
.big {
height: 105rem;
margin-bottom: 0;
}
</style>
</head>
<body>
<div class="container">
<div class="list">
<div class="box big">111</div>
<div class="box">222</div>
<div class="box">333</div>
<div class="box">444</div>
<div class="box">555</div>
</div>
</div>
</body>
</html>