成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

DOM和CSS渲染過程摘抄-021

happyfish / 1458人閱讀

摘要:和渲染過程一個簡單的頁面如上所示。的主要是為了完成匹配并把附加上上的每個。然后,計(jì)算每個也就是每個的位置,這又叫和過程。將與合并成一個渲染樹。優(yōu)化關(guān)鍵渲染路徑就是指最大限度縮短執(zhí)行上述第步至第步耗費(fèi)的總時間

DOM和CSS渲染過程 DOM



    
    
    
    Document


    

一個簡單的html頁面如上所示。

DOM有兩個概念:

解析

渲染

DOM解析

DOM解析:就是把你所寫的各種html標(biāo)簽,生成一個DOM TREE,可以認(rèn)為就是生成了一個最原始的頁面,一點(diǎn)樣式都沒有,毫無CSS修飾。

DOM渲染:瀏覽器會把本身默認(rèn)的樣式+用戶自己寫得樣式整合到一起,形成一個CSS TREE,而DOM渲染就是指DOM TREE 和 CSS TREE 結(jié)合到一起,生成一個Render TREE,呈現(xiàn)出一個帶有樣式的頁面。

1)瀏覽器會解析三個東西:

一個是HTML/SVG/XHTML,事實(shí)上,Webkit有三個C++的類對應(yīng)這三類文檔。解析這三種文件會產(chǎn)生一個DOM Tree。
CSS,解析CSS會產(chǎn)生CSS規(guī)則樹。
Javascript,腳本,主要是通過DOM API和CSSOM API來操作DOM Tree和CSS Rule Tree.
2)解析完成后,瀏覽器引擎會通過DOM Tree 和 CSS Rule Tree 來構(gòu)造 Rendering Tree。注意:

Rendering Tree 渲染樹并不等同于DOM樹,因?yàn)橐恍┫馠eader或display:none的東西就沒必要放在渲染樹中了。
CSS 的 Rule Tree主要是為了完成匹配并把CSS Rule附加上Rendering Tree上的每個Element。也就是DOM結(jié)點(diǎn)。也就是所謂的Frame。
然后,計(jì)算每個Frame(也就是每個Element)的位置,這又叫l(wèi)ayout和reflow過程。
3)最后通過調(diào)用操作系統(tǒng)Native GUI的API繪制。

線程

js 是單線程,但是瀏覽器是多線程的。

瀏覽器會有不同的線程,比如說

GUI 渲染線程

JS 線程

定時器觸發(fā)線程 (setTimeout)

瀏覽器事件線程 (onclick)

http 異步線程

.....

上面的幾個線程,在同一個瞬間,只有一個線程起作用,也就是互斥的。比如說瀏覽器在執(zhí)行GUI 渲染線程呢,那么其他的4個進(jìn)程,都處于掛起的狀態(tài),在隊(duì)列里面呆著。
DOM的渲染對應(yīng)的就是GUI渲染進(jìn)程;JS的執(zhí)行對應(yīng)的就是JS線程;所以,DOM的渲染與JS代碼的運(yùn)行,在同一瞬間只能有一個執(zhí)行!

阻塞

阻塞XXX是指讓XXX暫停了。比如JS的執(zhí)行阻塞DOM解析,就是

DOM解析 --> JS執(zhí)行(此時DOM解析暫停) --> JS執(zhí)行完畢 --> DOM繼續(xù)解析

DOM與CSS

先看它倆之間的關(guān)系,也就是分析CSS的加載對DOM的解析和渲染的影響。
很明顯,DOM自己在那解析DOM TREE 和 css樣式有啥關(guān)系啊,所以css不影響DOM解析。
也很明顯,DOM渲染就是要生成樣式呢,肯定和css有關(guān)系啊,所以css影響DOM渲染。
結(jié)論:

css的加載不會阻塞DOM的解析

css的加載會阻塞DOM的渲染

DOM與JS

JS(加載和執(zhí)行) 都會阻塞 DOM 的解析,因?yàn)镴S中可能會對DOM進(jìn)行操作,可能改變DOM的結(jié)構(gòu),所以JS的加載和執(zhí)行是會阻塞DOM解析的。
JS(加載和執(zhí)行) 都會阻塞 DOM 的渲染,同上面一樣,因?yàn)镴S中可能對樣式進(jìn)行操作。
注: html中每遇到< script >標(biāo)簽,頁面就會重新渲染一次,因?yàn)橐WC標(biāo)簽中的JS代碼拿到的都是最新的樣式。
結(jié)論:

JS的加載和執(zhí)行會阻塞DOM的解析

JS的加載和執(zhí)行會阻塞DOM的渲染

CSS與JS

在線程那里說了,CSS的加載會阻塞JS的執(zhí)行,因?yàn)镃SS的渲染GUI線程和JS運(yùn)行線程互斥。
但是CSS不會阻塞JS的加載(瀏覽器可以預(yù)先掃描并下載)
注1:

CSS、JS之間的加載是否阻塞,這里不考慮,因?yàn)楝F(xiàn)代的瀏覽器都會預(yù)先偷看文檔,并且下載。

注2:

這里的JS引入方式不包括async和defer

結(jié)論:

CSS的加載阻塞JS的運(yùn)行,不阻塞JS的加載

Note: 簡單提一句,請注意 visibility: hidden 與 display: none 是不一樣的。前者隱藏元素,但元素仍占據(jù)著布局空間(即將其渲染成一個空框),而后者 (display: none) 將元素從渲染樹中完全移除,元素既不可見,也不是布局的組成部分。

下面簡要概述了瀏覽器完成的步驟:

處理 HTML 標(biāo)記并構(gòu)建 DOM 樹。

處理 CSS 標(biāo)記并構(gòu)建 CSSOM 樹。

將 DOM 與 CSSOM 合并成一個渲染樹。

根據(jù)渲染樹來布局,以計(jì)算每個節(jié)點(diǎn)的幾何信息。

將各個節(jié)點(diǎn)繪制到屏幕上。

優(yōu)化關(guān)鍵渲染路徑_就是指最大限度縮短執(zhí)行上述第 1 步至第 5 步耗費(fèi)的總時間

https://developers.google.com...

https://developers.google.com...

https://developers.google.com...

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/104991.html

相關(guān)文章

  • DOMCSS渲染過程摘抄-021

    摘要:和渲染過程一個簡單的頁面如上所示。的主要是為了完成匹配并把附加上上的每個。然后,計(jì)算每個也就是每個的位置,這又叫和過程。將與合并成一個渲染樹。優(yōu)化關(guān)鍵渲染路徑就是指最大限度縮短執(zhí)行上述第步至第步耗費(fèi)的總時間 DOM和CSS渲染過程 DOM Document 一個簡單的html頁面如上所示。 DOM有兩個概念: 解析 渲染...

    gougoujiang 評論0 收藏0
  • CSS Conf -《新時代CSS布局》學(xué)習(xí)總結(jié)

    摘要:分享嘉賓簡介新時代布局的分享者是新加坡的國際知名專家陳慧晶。陳慧晶老師的分享主題介紹如下布局經(jīng)常是令前端開發(fā)者頭痛的一塊工作。布局系統(tǒng)在這一小節(jié)中,慧晶老師主要分享了跟這新時代布局的三大棟梁。的首個公開工作草案是在發(fā)布的,而的則是發(fā)布。 作者:陳大魚頭 github: KRISACHAN 記錄原因:2019年3月30日在深圳舉行了第五屆的CSS Conf,魚頭作為一枚CSS新手以及愛好者也...

    番茄西紅柿 評論0 收藏0
  • CSS Conf -《新時代CSS布局》學(xué)習(xí)總結(jié)

    摘要:分享嘉賓簡介新時代布局的分享者是新加坡的國際知名專家陳慧晶。陳慧晶老師的分享主題介紹如下布局經(jīng)常是令前端開發(fā)者頭痛的一塊工作。布局系統(tǒng)在這一小節(jié)中,慧晶老師主要分享了跟這新時代布局的三大棟梁。的首個公開工作草案是在發(fā)布的,而的則是發(fā)布。 作者:陳大魚頭 github: KRISACHAN 記錄原因:2019年3月30日在深圳舉行了第五屆的CSS Conf,魚頭作為一枚CSS新手以及愛好者也...

    libxd 評論0 收藏0
  • Router入門0x201: 從 URL 到 SPA

    摘要:的全稱是統(tǒng)一資源定位符英文,可以這么說,是一種標(biāo)準(zhǔn),而網(wǎng)址則是符合標(biāo)準(zhǔn)的一種實(shí)現(xiàn)而已。渲染器,將組件渲染到頁面上。 0x000 概述 從這一章開始就進(jìn)入路由章節(jié)了,并不直接從如何使用react-route來講,而是從路由的概念和實(shí)現(xiàn)來講,達(dá)到知道路由的本質(zhì),而不是只知道如何使用react-route庫的目的,畢竟react-route只是一個庫,是路由的一個實(shí)現(xiàn)而已,而不是路由本身。 ...

    honmaple 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<