原文連接html
em單位是基於font-size的繼承來計算的web
.parent { font-size: 16px; } .parent > .child { font-size: 1.2em; /* 19.2px */ }
相同的比例,不一樣的計算結果;svg
使用em單位時,margin、padding等屬性是基於當前元素的font-size計算。而當前元素的font-size則是基於父元素。spa
.tile { font-size: 1.2em; /* 19.2px */ margin: 1.2em; /* 23.04px */ padding: 1.2em; /* 23.04px */ border-radius: 1.2em; /* 23.04px */ }
ul { font-size: 0.8rem; }
"Root em" - 相對於根節點(<html>)的font-size來計算code
ul { font-size: 0.8rem; }
默認狀況下:
rem用做font-size單位,
px用做border-width單位,
em用做padding,margin,border-radius等等orm
爲line-height使用無單位的數字htm
使用單位:一個混合計算的結果
無單位:根據後代的font sizes自動變化blog
更精確
代碼簡單
更好的適應性繼承
14px / 16px = 0.875em
18px / 14px = 1.2857em圖片
使用標量去計算px單位的font sizes,再轉換爲一個em標量
使用rem做爲全局尺寸單位
使用em做爲區域尺寸單位
.tile { border: 2px solid #000; padding: 0.6em 1.2em; border-radius: 0.3em; margin-bottom: 1em; font-size: 1rem; } .tile__title { font-size: 0.8em; text-transform: uppercase; }
.dropdown__toggle::after { content: ""; position: absolute; right: 1em; top: 1em; border: 0.3em solid; border-color: black transparent transparent; }
.twitter > img { height: 1em; width: 1em; vertical-align: -0.1em; }
a:link { text-decoration: none; box-shadow: inset 0 -0.1em 0 0 #cef; transition: box-shadow 0.2s ease-in-out; color: #346; } a:hover { box-shadow: inset 0 -1.2em 0 0 #cef; }
:root { font-size: 0.8em; } @media (min-width: 35em) { :root { font-size: 1em; } } @media (min-width: 50em) { :root { font-size: 1.25em; } }
vw - 視圖寬度的1%vh - 視圖高度的1%vmin - vh/vw中較小的那個vmax - vh/vw中較大的那個