成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

重學(xué)前端學(xué)習(xí)筆記(十三)--瀏覽器工作解析(三)

trigkit4 / 614人閱讀

摘要:三操作過(guò)程首先,須把規(guī)則進(jìn)行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點(diǎn)的所有子節(jié)點(diǎn),因此規(guī)則是在匹配到本標(biāo)簽的結(jié)束標(biāo)簽時(shí)回退。

筆記說(shuō)明
重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:[email protected]
一、概括
本文主要聊聊瀏覽器是如何把  CSS 規(guī)則應(yīng)用到節(jié)點(diǎn)上,并給這棵樸素的 DOM 樹(shù)添加上 CSS 屬性的。
二、CSS構(gòu)建過(guò)程
構(gòu)建 DOM 的過(guò)程是:從父到子,從先到后,一個(gè)一個(gè)節(jié)點(diǎn)構(gòu)造,并且掛載到 DOM 樹(shù)上的,那么這個(gè)過(guò)程中,依次拿到上一步構(gòu)造好的元素,去檢查它匹配到了哪些規(guī)則,再根據(jù)規(guī)則的優(yōu)先級(jí),做覆蓋和調(diào)整。
2.1、選擇器

空格: 后代,選中它的子節(jié)點(diǎn)和所有子節(jié)點(diǎn)的后代節(jié)點(diǎn)

>: 子代,選中它的子節(jié)點(diǎn)

+:直接后繼選擇器,選中它的下一個(gè)相鄰節(jié)點(diǎn)

~:后繼,選中它之后所有的相鄰節(jié)點(diǎn)

||:列,選中表格中的一列

選擇器有個(gè)特點(diǎn),那就是選擇器的出現(xiàn)順序,必定跟構(gòu)建 DOM 樹(shù)的順序一致。這是一個(gè) CSS 設(shè)計(jì)的原則,即保證選擇器在 DOM 樹(shù)構(gòu)建到當(dāng)前節(jié)點(diǎn)時(shí),已經(jīng)可以準(zhǔn)確判斷是否匹配,不需要后續(xù)節(jié)點(diǎn)信息。

接下來(lái)看一下操作過(guò)程。

三、操作過(guò)程
首先,須把 CSS 規(guī)則進(jìn)行處理。作為一門(mén)語(yǔ)言,CSS 需要先經(jīng)過(guò)詞法分析和語(yǔ)法分析,變成計(jì)算機(jī)能夠理解的結(jié)構(gòu)。將其抽象成一棵可用的抽象語(yǔ)法樹(shù)。

一個(gè) compound-selector 是檢查一個(gè)元素的規(guī)則,而一個(gè)復(fù)合型選擇器,則是由數(shù)個(gè) compound-selector 通過(guò)前面講的符號(hào)連接起來(lái)的。

3.1、后代選擇器 “空格”
后代選擇器的作用范圍是父節(jié)點(diǎn)的所有子節(jié)點(diǎn),因此規(guī)則是在匹配到本標(biāo)簽的結(jié)束標(biāo)簽時(shí)回退。
a#b .cls {
    width: 100px;
}

當(dāng)匹配 a#b 的元素時(shí),才會(huì)開(kāi)始檢查它所有的子代是否匹配 .cls。

后退的情況:


    1
    2

3

這段代碼里有 cls 類的有有兩個(gè) span 標(biāo)簽,所以為了防止第三個(gè) span 才不會(huì)被選中,當(dāng)遇到 時(shí),必須使得規(guī)則 a#b .cls 回退一步。

3.2、后繼選擇器“ ~ ”
.cls~* {
    border:solid 1px green;
}
1 2 3 4 5

上面代碼可以看出 .cls 選中了span2,它的后繼應(yīng)該是 span3,span4span3的子節(jié)點(diǎn)不應(yīng)被選中, span5是后繼應(yīng)該被選中。

從上面我們可以得出一個(gè)結(jié)論:后繼節(jié)點(diǎn)和當(dāng)前節(jié)點(diǎn)父元素相同是充分必要條件。

3.3、子代選擇器 “>”
div>.cls {
    border:solid 1px green;
}
1 2 3 4 5

當(dāng) DOM 樹(shù)構(gòu)造到 div 時(shí),匹配了 CSS 規(guī)則的第一段,激活后面的 .cls 選擇條件,并且指定父元素必須是當(dāng)前 div。于是span2就會(huì)被選中。

3.4、直接后繼選擇器 “+”
直接后繼選擇器只對(duì)唯一一個(gè)元素生效,不需要像前面幾種一樣反復(fù)激活和關(guān)閉規(guī)則。
3.5、列選擇器 “ || ”
列選擇器比較特別,它是專門(mén)針對(duì)表格的選擇器。
3.6、其他 3.6.1、逗號(hào)分隔
/* 這里用,隔開(kāi),可以當(dāng)作兩條規(guī)則處理 */
a#b, .cls {

}
a#b {

}
.cls {

}
3.6.2、選擇器重合
可以使用樹(shù)形結(jié)構(gòu)來(lái)進(jìn)行一些合并,來(lái)提高效率。
#a .cls {

}
#a span {

}
#a>span {

}

上面選擇器可以構(gòu)建成一棵樹(shù)

a

< 空格 >.cls

< 空格 >span

>span

個(gè)人總結(jié)

之前學(xué)習(xí)css的時(shí)候沒(méi)有想過(guò)是什么實(shí)現(xiàn)的,只知道怎么用,這樣寫(xiě)能實(shí)現(xiàn)效果就行了,學(xué)習(xí)winter專欄之后,認(rèn)識(shí)更深了,有些問(wèn)題直接本質(zhì)可能對(duì)你會(huì)影響更大。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/55047.html

相關(guān)文章

  • 重學(xué)前端學(xué)習(xí)筆記)--覽器工作解析

    摘要:三操作過(guò)程首先,須把規(guī)則進(jìn)行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點(diǎn)的所有子節(jié)點(diǎn),因此規(guī)則是在匹配到本標(biāo)簽的結(jié)束標(biāo)簽時(shí)回退。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,...

    yintaolaowanzi 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記)--覽器工作解析

    摘要:三操作過(guò)程首先,須把規(guī)則進(jìn)行處理。后代選擇器空格后代選擇器的作用范圍是父節(jié)點(diǎn)的所有子節(jié)點(diǎn),因此規(guī)則是在匹配到本標(biāo)簽的結(jié)束標(biāo)簽時(shí)回退。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,...

    KitorinZero 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(二)--狹義的文檔對(duì)象DOM

    摘要:事件觸發(fā)和監(jiān)聽(tīng)事件相關(guān)。文檔是一個(gè)由標(biāo)簽嵌套而成的樹(shù)形結(jié)構(gòu),因此,也是使用樹(shù)形的對(duì)象模型來(lái)描述一個(gè)文檔。節(jié)點(diǎn)的寫(xiě)法三是樹(shù)繼承關(guān)系的根節(jié)點(diǎn)。七表示一個(gè)上的范圍,這個(gè)范圍是以文字為最小單位的。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的...

    Guakin_Huang 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(二)--狹義的文檔對(duì)象DOM

    摘要:事件觸發(fā)和監(jiān)聽(tīng)事件相關(guān)。文檔是一個(gè)由標(biāo)簽嵌套而成的樹(shù)形結(jié)構(gòu),因此,也是使用樹(shù)形的對(duì)象模型來(lái)描述一個(gè)文檔。節(jié)點(diǎn)的寫(xiě)法三是樹(shù)繼承關(guān)系的根節(jié)點(diǎn)。七表示一個(gè)上的范圍,這個(gè)范圍是以文字為最小單位的。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的...

    wuaiqiu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<