加載是異步,不會影響DOM樹的構建,只是說在CSS沒處理好以前,構建好的DOM並不會顯示出來css
DOM去匹配css rule的時候必須先等頁面的css都下載完成瀏覽器
流式渲染,每生成一個dom節點,便馬上去匹配相應的css規則dom
: 子代,選中它的子節點
前進:一個 CSS 選擇器按照 compound-selector來拆成數段,每當知足一段條件的時候,就前進一段。異步
後退:選擇器的做用範圍,匹配到本標籤的結束標籤時(做用範圍邊緣)回退。字體
後代選擇器 「空格」
規則:spa
a#b .cls {設計
width: 100px; } <a id=b> <span>1<span> <span class=cls>2<span> </a> <span class=cls>3<span>
後繼選擇器「 ~ 」
規則:給選擇器的激活- 帶上一個條件:父元素
緣由:後繼選擇器只做用於一層.按照 DOM 樹的構造順序,4 在 3 和 5 中間,咱們就沒有辦法像前面講的後代選擇器同樣經過激活或者關閉規則來實現匹配
過程:當前半段的 .cls 匹配成功時,後續 * 所匹配的全部元素的父元素都已經肯定了(後繼節點和當前節點父元素相同是充分必要條件code
.cls~* { border:solid 1px green; } <div> <span>1<span> <span class=cls>2<span> <span> 3 <span>4</span> <span> <span>5</span> </div>
子代選擇器「 >」
規則:拿當前節點的父元素做爲父元素
當 DOM 樹構造到 div 時,匹配了 CSS 規則的第一段
激活.cls而且指定父元素必須是當前 div圖片
div>.cls { border:solid 1px green; } <div> <span>1<span> <span class=cls>2<span> <span> 3 <span>4</span> <span> <span>5</span> </div>
直接後繼選擇器「 +」get
其餘
CSS 選擇器還支持逗號分隔
視爲兩條規則的一種簡易寫法 a#b, .cls {} a#b {}
選擇器可能有重合
使用樹形結構來進行一些合併 #a .cls {} #a span {} #a>span {} #a < 空格 >.cls < 空格 >span
總結: