直到外部資本載入並解析或履行結束後才會繼續向下解析html。關於款式與指令碼的先後順序相同也會影響到瀏覽器的解析程序,究其原因首要在於:script指令碼履行程序中可能會修改html介面(如document.write函式);dom節點的css款式會影響js的履行成果。在我的測驗中得到以下四條結論:
1)外部款式會堵塞後續指令碼履行,直到外部款式載入並解析結束。
view code
2)外部款式不會堵塞後續外部指令碼的載入,但會堵塞外部指令碼的履行。
主頁**
外部指令碼
從瀑布圖中咱們能夠看到,外部指令碼與外部款式是並行載入,但直到外部款式載入結束,外部指令碼才開端履行
3)假如後續外部指令碼含有async特點(ie下為defer),則外部款式不會堵塞該指令碼的載入與履行
view code
從瀑布圖中能夠看到外部指令碼的載入與履行並不受link的堵塞
4)關於動態創立的link標籤不會堵塞這以後動態創立的script的載入與履行,
不論script標籤是否具有async特點,但關於別的非動態創立的script,以上三條結論仍適用
html解析結束後,開端構建出現樹rendertree,這一步的首要作業在於將css款式應用到dom節點上,webkit核心將這一程序稱為附著,別的瀏覽器有紛歧樣的概念。對前端工程師而言這個程序會涉及到css層疊疑問。
首先將依據款式主要性排序,由低到高依次為:
瀏覽器宣告
使用者一般宣告
作者一般宣告
作者主要宣告
使用者主要宣告
關於同一主要等級,則是依據css選擇符的特指度來斷定優先順序;一條款式宣告的特指度由以下四個有些決議:s-i-c-e
宣告來自內聯的style特點則 s+1;
宣告中含有id特點則 i+1;
宣告中含有類、偽類、特點擊擇器則 c+1;
生命中含有元素、偽元素選擇器則 e+1;
特指度的對比類似於兩個字串之間對比鉅細。
出現樹的每乙個節點即為與其相對應的dom節點的css框,框的型別與dom節點的display特點有關,block元素生成block框,inline元素生成inline框。每乙個出現樹節點都有與之相對應的dom節點,但dom節點紛歧定有與之相對應的出現樹節點,比方display特點為none的dom節點,並且出現樹節點在出現樹中的方位與他們在dom樹中的方位紛歧定相同,比方float與肯定定位元素。
HTML渲染過程
這裡的過程從伺服器返回html文件開始,瀏覽器請求伺服器的過程不多做介紹。解析html和構建dom是同時執行的,當瀏覽器收到html文件時,瀏覽器通過html直譯器解析html和構建dom樹。瀏覽器採用的是自上而下解析。所以在構建dom樹時兩個標籤會阻塞解析,就是會涉及到外部資源的link和scri...
html渲染過程
dom document object model 瀏覽器將html解析成樹形的資料結構,簡稱dom cssom css object model,瀏覽器將css 解析成樹形的資料結構 dom和cssom都是以bytes characters nodes object model 這樣的方式生成最終...
HTML渲染過程詳解
無意中看到寒冬關於前端的九個問題,細細想來我也只是對第 一 二 九問有所了解,正好也趁著這個機會梳理一下自己的知識體系。由於本人對http協議以及dns對url的解析問題並不了解,所以這裡之 url請求載入到瀏覽器端時,瀏覽器對html的解析到呈現過程,後來經過幾位道友分享,整理了一下url解析的過...