今天偷個懶,不長篇大論,分享幾個你可能不知道的 CSS 小知識。前端
CSS 代碼:瀏覽器
.red {
color: red;
}
.blue {
color: blue;
}
複製代碼
HTML 代碼:bash
<div class="red blue">這是什麼顏色</div>
<div class="blue red">這是什麼顏色</div>
複製代碼
記得以前這是一道比較火的 CSS 考題,當時好像是有很多的人答錯(30% 以上)佈局
答案大家應該是知道的。性能
後代選擇器字體
樣式選擇器中間的空格是什麼?它的名字是 —— 後代選擇器。spa
div p {
color: #3388ff;
font-size: 14px;
}
複製代碼
耗能與否取決於項目的體積,但不建議使用沒有意義的後代選擇器。例如:code
.div p {
// ...
}
複製代碼
爲何會更消耗性能呢?cdn
由於瀏覽器首先會找到全部 p
標籤,而後再向上查找包含 class
爲 div
標籤。這樣一來若是代碼中有不少 p
標籤,無疑是會作不少重複工做的。get
因此能夠減小使用 HTML 標籤來定義 CSS 的方式,換成使用具體的 class
。
.content_box div p a {
// ...
}
複製代碼
瀏覽器會對上面的例子作以下的步驟處理:
<a>
元素<p>
元素包裹的 <a>
元素.content_box
的元素從上面的步驟咱們能夠看出,越靠右的選擇器越具備惟一性,瀏覽器解析 CSS 屬性的效率就越高。
因此必定換成使用具體的 class
編寫 CSS 代碼。
咱們知道修改某些 CSS 屬性會致使整個頁面佈局的重繪( repaint )/重排( reflow )。
repaint 的速度遠快於 reflow,因此避免 reflow 更重要
若是在大量的元素上更改這些屬性,那麼計算和更新他們的位置/大小須要花費很長的時間。
有一些 CSS 屬性會比其餘屬性消耗能多的性能,即瀏覽器解析這些屬性須要花費更多的時間。
如:border-radius
、box-shadow
、filter
、:nth-child
等
固然這些屬性咱們常常使用,有些沒法避免。要作出適當的取捨。
但願這幾個 CSS 小知識能夠對你有所幫助,而後點個贊在走唄。
若是你想進【大前端交流羣】,關注公衆號點擊「交流加羣」添加機器人自動拉你入羣。關注我第一時間接收最新干貨。