你不知道的css單位

要想了解rem這個(gè)單位的原理以及使用方法舟肉,先來(lái)了解下css所有的度量單位修噪。很多同學(xué)不太清楚的是,在 CSS 中長(zhǎng)度單位又分為絕對(duì)長(zhǎng)度和相對(duì)長(zhǎng)度路媚。我們今天來(lái)學(xué)習(xí)一下這些單位黄琼,看看有什么區(qū)別。

px

px像素單位其實(shí)是和設(shè)備屏幕的分辨率是直接相關(guān)的整慎。

在web開發(fā)中脏款,像素現(xiàn)在仍然是典型(主流的)度量單位。當(dāng)然裤园,你可以在web開發(fā)的過(guò)程中采用其他的單位撤师,但是往往這些單位在渲染時(shí)都被映射換算成像素。是我們最常使用的單位:

header{
    width: 100px;
    height: 100px;
    border: 1px solid #fff;
}

em

em的含義最初是指基于當(dāng)前字體大寫字母”M”的尺寸比然。所以當(dāng)改變font-size的大小時(shí)丈氓,這個(gè)長(zhǎng)度單位將會(huì)發(fā)生變化。

現(xiàn)代所有的瀏覽器中强法,都會(huì)有這樣的一個(gè)默認(rèn)值万俗,即1em = 16px,所以即使你忘記了設(shè)置font-size也不要緊饮怯。

對(duì)于em我們需要注意:

基于當(dāng)前元素的(如果沒(méi)設(shè)置就是繼承其父元素的)font-size
<div style="font-size: 12px;">
    <span style="font-size: 2em">em單位</span>
</div>

如上代碼中闰歪,span標(biāo)簽中設(shè)置了font-size: 2em,因?yàn)槠涓笜?biāo)簽設(shè)置了font-size: 12px蓖墅,所以span標(biāo)簽的結(jié)果就是font-size: 24px库倘。

rem

rem單位是相對(duì)于字體大小的html元素临扮,也稱為根元素。
1rem = 根元素(html 節(jié)點(diǎn))字體大小的倍數(shù)教翩。根元素(html)的 font-size:16px

html {
  font-size: 10px; /* 不建議設(shè)置 font-size: 62.5%; 在 IE 9-11 上有偏差杆勇,具體表現(xiàn)為 1rem = 9.93px。 */
}

.sqaure {
  width: 5rem;  /* 50px */
  height: 5rem; /* 50px */
}

中文版的 Chrome 不支持把font-size 設(shè)置到到 12px 以下饱亿,因此可以考慮給根元素設(shè)置 font-size: 125%蚜退。

rem與em的區(qū)別:

rem是相對(duì)于根元素(html)的字體大小,而em是相對(duì)于其父元素的字體大小
em最多取到小數(shù)點(diǎn)的后三位

<style>
  html{ font-size: 20px; }
  body{ 
    font-size: 1.4rem;  /* 1rem = 28px */
    padding: 0.7rem;  /* 0.7rem = 14px */
  } 
  div{
    padding: 1em;  /* 1em = 28px */
  }
  span{
    font-size:1rem;  /* 1rem = 20px */
    padding: 0.9em;  /* 1em = 18px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>

在上面的代碼中彪笼,我們將根元素(html)的字體大小font-size設(shè)為20px钻注,
body的字體大小設(shè)為1rem,那么轉(zhuǎn)換為像素就是28px(20 × 1.4)配猫,
接著我們又將div的padding設(shè)為1em幅恋,由于其基于父元素,所以轉(zhuǎn)換為像素是28px ( 28 × 1)泵肄,
然后我們又將span的字體大小設(shè)為1rem捆交,也就是20px,由于其自身設(shè)置了字體大小凡伊,所以padding設(shè)為1em零渐,轉(zhuǎn)換為像素是20px(20 × 1),而不是乘以其父元素的字體大小28px(28 × 1)系忙。

注意:當(dāng)元素自身設(shè)置了字體大小,那么如果它的其他css屬性也使用em單位惠豺,則會(huì)基于它自身的字體大小银还。(就像上面例子的span的padding一樣)

基于上面這些原因,個(gè)人更傾向于使用rem洁墙,因?yàn)閑m使用不當(dāng)?shù)脑捰挤瑁?dāng)出現(xiàn)多層繼承時(shí),會(huì)很容易混淆热监,比如:
<style>
  html{ font-size: 20px; }
  body{ 
    font-size: 0.9em;  /* 18px */
  } 
  div{
    font-size: 0.8em;  /* 14.4px */
  }
  span{
    font-size: 0.9em;  /*  12.96px */
  }
</style>

<html>
  <body>
    <div>   
      <span></span>  
    </div>
  </body>
</html>
使用em時(shí)捺弦,如果其祖先元素都是用了em,那么就會(huì)像上面一樣孝扛,body繼
承其父元素html的字體大小列吼,而div又繼承其父元素body的字體大小
,而span又繼承其父元素div的字體大小苦始,
最終span的字體大小最終是12.96px(20 × 0.9 ×0.8 × 0.9)寞钥。


vw vh

vw viewpoint width,視窗寬度陌选,1vw=視窗寬度的1%
vh viewpoint height理郑,視窗高度蹄溉,1vh=視窗高度的1%

vh等于viewport高度的1/100.例如,如果瀏覽器的高是900px,1vh求得的值為9px您炉。同理柒爵,如果顯示窗口寬度為750px,1vw求得的值為7.5px。

做一個(gè)占滿高度的或者接近占滿高度的幻燈片赚爵,可以用一個(gè)非常簡(jiǎn)單的方法實(shí)現(xiàn)棉胀,只要用一行CSS:
.cover{
    width: 100vw;
    height: 100vh;
}

vmin、vmax

vmin和vmax是相對(duì)于視口的高度和寬度兩者之間的最小值最大值囱晴。

如果瀏覽器的高為1100px膏蚓、寬為700px,那么1vmin就是7px畸写,1vmax就是11px驮瞧;如果瀏覽器的高為800px,寬為1080px枯芬,那么1vmin也是8px论笔,1vmax也是10.8px。

選擇使用什么字體單位主要由你的項(xiàng)目來(lái)決定千所,如果你的用戶群都使用最新版的瀏覽器狂魔,那推薦使用rem,如果要考慮兼容性淫痰,那就使用px,或者兩者同時(shí)使用最楷。當(dāng)然了,最好根據(jù)實(shí)際應(yīng)用來(lái)使用相應(yīng)的字體單位

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市待错,隨后出現(xiàn)的幾起案子籽孙,更是在濱河造成了極大的恐慌,老刑警劉巖火俄,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犯建,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瓜客,警方通過(guò)查閱死者的電腦和手機(jī)适瓦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谱仪,“玉大人玻熙,你說(shuō)我怎么就攤上這事⊙壳洌” “怎么了揭芍?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卸例。 經(jīng)常有香客問(wèn)我称杨,道長(zhǎng)肌毅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任姑原,我火速辦了婚禮悬而,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锭汛。我一直安慰自己笨奠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布唤殴。 她就那樣靜靜地躺著般婆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朵逝。 梳的紋絲不亂的頭發(fā)上蔚袍,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音配名,去河邊找鬼啤咽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渠脉,可吹牛的內(nèi)容都是我干的宇整。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芋膘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鳞青!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起为朋,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盼玄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后潜腻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡器仗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年融涣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片精钮。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡威鹿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轨香,到底是詐尸還是另有隱情忽你,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布臂容,位于F島的核電站科雳,受9級(jí)特大地震影響根蟹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糟秘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一简逮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尿赚,春花似錦散庶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冰寻,卻和暖如春须教,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背性雄。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秒旋,地道東北人约计。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓迁筛,卻偏偏與公主長(zhǎng)得像煤蚌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子细卧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容