css中rem,em,px的區別和使用場景


一,在css中單位長度用的最多的是px、em、rem,這三個的區別是:

 

1)px是固定像素,一旦設置了就無法因為適應頁面而改變。

2)em和rem相對於px更具有靈活性,因為他們是相對的長度單位(即長度不是定死的,更適用於響應式布局)。

  em和rem的區別一句話概括:em相對於父元素,rem相對於根元素(html)

  rem中的r意思是root(根源)

 

二,詳細介紹em

  • 子元素字體大小的em是相對於父元素字體大小
  • 元素的width/height/padding/margin的em的話是相對於該元素的font-size

下面的一個栗子

1 <div>
2     我是父元素div
3     <p>
4         我是子元素p
5         <span>我是孫元素span</span>
6     </p>
7 </div>
 1 div {
 2   font-size: 40px;
 3   width: 10em; /* 400px */
 4   height: 10em;
 5   border: solid 1px black;
 6 }
 7 p {
 8   font-size: 0.5em; /* 20px */ 
 9   width: 10em; /* 200px */
10   height: 10em;
11   border: solid 1px red;
12 }
13 span {
14   font-size: 0.5em;  
15   width: 10em;
16   height: 10em;
17   border: solid 1px blue;
18   display: block;
19 }

運行結果如下:

 

 猜猜看孫元素的字體是多少呢?

運行結果是12px,是不是和計算的不一致?因為chrome瀏覽器最小字體為12px,小於這個字體就會默認使用12px.當然這一尬境可以由css3解決,這里就不多說了。

三,詳細介紹rem

rem是全部的長度都相對於根元素,根元素是誰?<html>元素。

使用方法:

1)通常做法是給html元素設置字體大小,然后其他元素的長度單位就為rem

栗子同上(html一樣,只是把css中em換成rem):

 1 html {
 2     font-size: 10px;
 3     }
 4 div {
 5     font-size: 4rem; /* 40px */
 6     width: 30rem;  /* 300px */
 7     height: 30rem;
 8     border: solid 1px black;
 9 }
10 p {
11     font-size: 2rem; /* 20px */
12     width: 15rem;
13     height: 15rem;
14     border: solid 1px red;
15 }
16 span {
17     font-size: 1.5rem;
18     width: 10rem;
19     height: 10rem;
20     border: solid 1px blue;
21     display: block;
22 }

 

所以你可以說出孫元素span的font-size具體值嗎?

用rem的好處:當用rem做響應式時,直接在媒體查詢中改變html的font-size的大小,那么用rem作為單位的元素大小都會相應的改變,很方便。

所以更深刻的體會到em,rem的不同(參照物的不同)

總結:

px 與 rem 的選擇?

對於只需要適配少部分手機設備,且分辨率對頁面影響不大的,使用px即可 。

對於需要適配各種移動設備,使用rem,例如只需要適配iPhone和iPad等分辨率差別比較挺大的設備。

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM