幾個CSS的單位你需要了解一下

css長度單位

css 長度單位一般我們分為絕對長度單位相對長度單位

絕對長度單位

絕對長度單位是一個固定的值噪舀,它反應(yīng)一個真實的物理尺寸颅拦。那么臊恋,常見的絕對長度單位有哪些呢逆甜?

  • in虱肄,英寸
  • cm,厘米
  • mm交煞,毫米
  • pt咏窿,points
  • pc,Picas

這些單位都是擁有真實的物理尺寸的以及確定的換算關(guān)系素征,比如翰灾,1in = 2.54cm。我們平時在書寫css代碼時稚茅,當然也可以直接使用這些單位,并且也能夠在屏幕上表現(xiàn)平斩。不過由于這些單位都是絕對長度單位亚享,往往不利于頁面屏幕的渲染,這些絕對長度單位更多的使用場景往往是被用在印刷绘面、打印等方向欺税。

相對長度單位

CSS相對長度單位中的相對二字,表明了其長度單位會隨著它的參考值的變化而變化揭璃,不是固定的晚凿。下面是常用的一些相對長度單位:

  • px,Pixels像素
  • em瘦馍,元素的字體高度
  • ex歼秽,x-height,字母x的高度
  • %情组,百分比
  • ch燥筷,字符0的寬度
  • rem箩祥,根元素(html)的font-size
  • vw,viewpoint width肆氓,視窗寬度袍祖,1vw=視窗寬度的1%
  • vh,viewpoint height谢揪,視窗高度蕉陋,1vh=視窗高度的1%
  • vminvmax

今天我們了解幾個我們比較常用而且不容易記得幾個css的單位:px em rem vw vh vmin vmax

px

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

在web開發(fā)中凳鬓,像素現(xiàn)在仍然是典型(主流的)度量單位。當然屈雄,你可以在web開發(fā)的過程中采用其他的單位村视,但是往往這些單位在渲染時都被映射換算成像素。是我們最常使用的單位:

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

em的含義最初是指基于當前字體大寫字母”M”的尺寸酒奶。所以當改變font-size的大小時蚁孔,這個長度單位將會發(fā)生變化。

現(xiàn)代所有的瀏覽器中惋嚎,都會有這樣的一個默認值杠氢,即1em = 16px,所以即使你忘記了設(shè)置font-size也不要緊另伍。

對于em我們需要注意:

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

如上代碼中鼻百,span標簽中設(shè)置了font-size: 2em,因為其父標簽設(shè)置了font-size: 12px摆尝,所以span標簽的結(jié)果就是font-size: 24px温艇。

rem

rem單位是相對于字體大小的html元素,也稱為根元素堕汞。
1rem = 根元素(html 節(jié)點)字體大小的倍數(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%

px em rem 轉(zhuǎn)換工具


rem與em的區(qū)別:

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

<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)债蜜。

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

基于上面這些原因儒洛,個人更傾向于使用rem,因為em使用不當?shù)脑捓撬伲敵霈F(xiàn)多層繼承時琅锻,會很容易混淆,比如:
<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時向胡,如果其祖先元素都是用了em恼蓬,那么就會像上面一樣,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棘街。

做一個占滿高度的或者接近占滿高度的幻燈片,可以用一個非常簡單的方法實現(xiàn)承边,只要用一行CSS:
.cover{
    width: 100vw;
    height: 100vh;
}
vmin遭殉、vmax

vminvmax是相對于視口的高度和寬度兩者之間的最小值最大值

如果瀏覽器的高為1100px博助、寬為700px险污,那么1vmin就是7px,1vmax就是11px;如果瀏覽器的高為800px蛔糯,寬為1080px拯腮,那么1vmin也是8px,1vmax也是10.8px蚁飒。

兼容性

注意: 選擇使用什么字體單位主要由你的項目來決定动壤,如果你的用戶群都使用最新版的瀏覽器,那推薦使用rem淮逻,如果要考慮兼容性琼懊,那就使用px,或者兩者同時使用。當然了,最好根據(jù)實際應(yīng)用來使用相應(yīng)的字體單位


參考博客:

博客來源
W3C
饑人谷
感謝各位所寫的博客作為了參考,也使用了部分代碼來加深印象,如果有侵權(quán),請聯(lián)系刪除,謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爬早,一起剝皮案震驚了整個濱河市哼丈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筛严,老刑警劉巖醉旦,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桨啃,居然都是意外死亡车胡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門优幸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨拍,“玉大人,你說我怎么就攤上這事网杆「危” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵碳却,是天一觀的道長队秩。 經(jīng)常有香客問我,道長昼浦,這世上最難降的妖魔是什么馍资? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮关噪,結(jié)果婚禮上鸟蟹,老公的妹妹穿的比我還像新娘。我一直安慰自己使兔,他們只是感情好建钥,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虐沥,像睡著了一般熊经。 火紅的嫁衣襯著肌膚如雪泽艘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天镐依,我揣著相機與錄音匹涮,去河邊找鬼。 笑死槐壳,一個胖子當著我的面吹牛然低,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宏粤,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼脚翘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绍哎?” 一聲冷哼從身側(cè)響起来农,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崇堰,沒想到半個月后沃于,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡海诲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年繁莹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片特幔。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡咨演,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚯斯,到底是詐尸還是另有隱情薄风,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布拍嵌,位于F島的核電站遭赂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏横辆。R本人自食惡果不足惜撇他,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狈蚤。 院中可真熱鬧困肩,春花似錦、人聲如沸脆侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽他嚷。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筋蓖,已是汗流浹背卸耘。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粘咖,地道東北人蚣抗。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像瓮下,于是被迫代替她去往敵國和親翰铡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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