面試必問的8個CSS響應式單位,你知道幾個?

搞前端的半夏發表於2022-04-28

大家好,我是半夏?,一個剛剛開始寫文的沙雕程式設計師.如果喜歡我的文章,可以關注➕ 點贊 ? 加我微信:frontendpicker,一起學習交流前端,成為更優秀的工程師~關注公眾號:搞前端的半夏,瞭解更多前端知識! 點我探索新世界!

原文連結 ==>http://sylblog.xin/archives/51

前言

今天,我們生活在手機的世界裡。有如此多的手機,有如此多的螢幕,螢幕的尺寸從當年的2.4英寸到3.5英寸、4.0英寸、5.0英寸等等,到現在基本上6.0英寸起步了。

em

它是相對於父字型大小的。

比如給元素設定font-size: 2em,這裡的預設字型大小實際上是繼承自父親的大小,font-size: 2em表示當前元素字型大小是父親的2倍。

求下面em的px值

body{
  font-size: 2em;
}
p {
  font-size: 2em;
  width: 2em;
}
<body>
em
<div>
  <p>em</p>
</div>
</body>

第一個em的大小是32px,第二個em的大小的是64px。

html預設是16px,body是2em,是預設的2倍32px,
div是32px,p是div的2倍64px。

ch

它是相對於'0'(零)的寬度。
1ch就是一個'0'

div {
  width: 3ch;
  background: powderblue;
}

<div>000000</div>

rem

元素(html 節點)字型大小的倍數。

比如一個元素設定 width: 2rem 表示該元素寬度為html節點的font-size 大小的2倍。

如果html未設定font-size的大小,預設是16px。

注意!:Chrome 預設最小字型大小為12px,小於12px的字型都顯示12px大小。但是你可以Chrome瀏覽器的設定進行修改。

舉例

 html{
 font-size: 10px;
}
body {
  font-size: 18px;
}
h1 {
  font-size: 1rem;
}
      

這裡的h1的字型大小是10px;

視口單位

視口單位(Viewport units)

什麼是視口?

MDN

視口 (viewport) 代表當前可見的計算機圖形區域。在 Web 瀏覽器術語中,通常與瀏覽器視窗相同,但不包括瀏覽器的 UI, 選單欄等——即指你正在瀏覽的文件的那一部分。

Web 瀏覽器包含兩個 viewport,佈局視口 (layout viewport) 和視覺視口 (visual viewport)。visual viewport 指當前瀏覽器中可見的部分,並且可以變化。當使用觸屏雙指縮放,當動態鍵盤在手機上彈出的時候,或者之前隱藏的位址列變得可見的時候,visual viewport 縮小了,但是 layout viewport 卻保持不變。

視口單位中的“視口”,是指佈局視口,即window.innerWidth/window.innerHeight大小。

vw

它相對於視口寬度的1% 。


假設視口寬度1290px,則10vw 就是129px.

通過下面的動圖可以看到,當你拖拽瀏覽器的寬度的時候字型的大小是在變化的,拖拽高度的時候,字型大小是不變化的。

vm.gif

vh

1vw等於視口寬度的1%。

通過下面的動圖可以看到,當你拖拽瀏覽器的高度的時候字型的大小是在變化的,拖拽寬度的時候,字型大小是不變化的。

vh.gif

vmin

vmin表示視口的寬度和高度中的較小值,也就是vw 和 vh 中的較小值。如果視口寬度大於其高度,則將根據高度計算該值。

通過下面的動圖可以看到:

當你瀏覽器的寬度大於高度的時候,拖拽寬度,字型大小不變;拖拽高度,字型變化。

當你瀏覽器的高度大於寬度的時候,拖拽高度,字型大小不變;拖拽寬度度,字型變化
vmin.gif

vmax

正好與vmin 相反

%

它是相對於父元素的。

% 對不同屬性有不同的含義:

例如:
font-size: 200% 和font-size: 2em 一樣,表示字型大小是預設(繼承自父親)字型大小的2倍。

例如: line-height: 200% 表示行高是自己字型大小的2倍。

例如:width: 100%表示自己content的寬度等於父親content寬度的1倍。

相關文章