国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

程序員:HTML、CSS、JavaScript是如何變成頁面的?

開發(fā) 前端
從輸入HTML、CSS、JavaScript到瀏覽器渲染出我們預期的效果,渲染流程分為這幾個子階段:構(gòu)建DOM樹、樣式計算、布局階段、分層、繪制、分塊、光柵化和合成。

從輸入HTML、CSS、JavaScript到瀏覽器渲染出我們預期的效果,渲染流程分為這幾個子階段:構(gòu)建DOM樹、樣式計算、布局階段、分層、繪制、分塊、光柵化和合成。

以下面這段html舉例講解這幾個過程: 

  1. //aa.html  
  2. <!DOCTYPE html>  
  3. <html lang="en">  
  4. <head>  
  5. <meta charset="UTF-8">  
  6. <title>Title</title>  
  7. <link rel="stylesheet" href="./aa.css">  
  8. </head>  
  9. <body>  
  10. <p id="p-one" style="color:red">hello</p>  
  11. <p id="p-two">hi</p>  
  12. <button id="p-three">ok</button>  
  13. </body>  
  14. <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>  
  15. <script src="./aa.js"></script>  
  16. </html>  
  1. //aa.css  
  2. #p-two {  
  3. font-size:2rem;  
  4.  
  1. //aa.js  
  2. $("#p-three").bind("click", function() {  
  3. $("#p-three").css("color", "blue");  
  4. }); 

構(gòu)建DOM樹

因為瀏覽器⽆法直接理解和使⽤HTML,所以需要將HTML轉(zhuǎn)換為瀏覽器能夠理解的結(jié)構(gòu)——DOM樹。

樣式計算

樣式計算的⽬的是為了計算出DOM節(jié)點中每個元素的具體樣式,分為三個步驟:

1. 把CSS轉(zhuǎn)換為瀏覽器能夠理解的結(jié)構(gòu)—styleSheets

2.  轉(zhuǎn)換樣式表中的屬性值,使其標準化,如: 

  1. font-size:2em->font-size:32px  
  2. p{color:blue}->p{color:rgb(0,0,255)}  
  3. div{font-weight:bold}->div{font-weight:700} 

3.計算出DOM樹中每個節(jié)點的具體樣式,最終輸出的內(nèi)容是每個DOM節(jié)點的樣式,并被保存在ComputedStyle的結(jié)構(gòu)內(nèi)。

布局階段

現(xiàn)在,以及有了DOM樹和DOM樹中元素的樣式,但還不足以顯示頁面,因為還不知道DOM元素的幾何位置信息,布局階段就是需要計算出DOM樹中元素的幾何位置,包括以下幾個步驟:

創(chuàng)建布局樹

DOM樹中包含很多不可見的標簽,比如某個標簽使用了屬性"display:none"。所以在顯示之前,還要額外地構(gòu)建一棵只包含可見元素的布局樹,瀏覽器創(chuàng)建布局樹的大致流程為:遍歷DOM樹中所有可見節(jié)點,并加入布局樹中,忽略不可見節(jié)點。

布局計算

計算每個元素的幾何坐標位置,并將這些信息保存在布局樹中。

小結(jié)前三個階段:在HTML頁面內(nèi)容被提交給瀏覽器渲染引擎后,渲染引擎首先將HTML解析為瀏覽器可以理解的DOM;然后根據(jù)CSS樣式表,計算出DOM數(shù)所有節(jié)點的樣式;接著又計算每個元素的幾何坐標位置,并將這些信息保存在布局樹中。

分層

有了每個元素的樣式和位置信息,但還是不能開始著手繪制頁面,因為頁面中還有很多復雜的效果,如3D變化、頁面滾動等,為了實現(xiàn)這些效果,渲染引擎還需要為特定節(jié)點生成專門的圖層,并生成一顆對應(yīng)的圖層樹,即有些元素實際上是被分成了很多層,這些圖層疊加后合成了最終的頁面。只要滿足下面兩個條件之一的元素就會可以生成一個對應(yīng)的圖層:

擁有層疊上下文屬性的元素會被提升為單獨的一層

從圖中可以看出,明確定位屬性的元素、定義透明屬性的元素、使用CSS濾鏡的元素等,都擁有層疊上下文屬性。

需要裁減的地方也會被創(chuàng)建為圖層

舉例:在css中指定了一個div大width和height屬性后,如果div子元素p標簽的文字內(nèi)容超過了widthheight大小,就會只把能在widthheight面積內(nèi)能顯示的內(nèi)容顯示出來,其他內(nèi)容被裁減掉了。

圖層繪制

有了圖層樹之后,渲染引擎會對圖層樹中的每個圖層進行繪制。圖層繪制階段,就是輸入各種繪制指令組成的列表(注意,這個階段還不是真正地著手繪制)。

在原aa.html文件中添加代碼<div style="width:300px;height:300px;background: green;">pp</div>下圖中,紅色區(qū)域就是繪制列表,粉色區(qū)域顯示的是繪制過程,可點擊任何一個繪制過程查看。

分塊和柵格化操作

繪制列表只是用來記錄繪制順序和繪制指令,而實際繪制操作是由渲染引擎中的合成線程來完成的。當圖層的繪制列表準備好之后,主線程就會把繪制列表提交給合成線程。合成線程會將圖層劃分為圖塊,視口(就是當前窗口可見的區(qū)域)附近的圖塊優(yōu)先生產(chǎn)位圖,生產(chǎn)位圖的操作實際由柵格化來執(zhí)行(柵格化的具體含義可自行百度)。渲染進維護了一個柵格化線程池,所有的圖塊柵格化都是在線程池內(nèi)執(zhí)行的,該過程會使用GPU來加速,生產(chǎn)的位圖被保存在GPU內(nèi)存中。

合成和顯示

當所有圖塊都被光柵化(柵格化)后,合成線程就會生成繪制圖塊的命令,然后該命令提交給瀏覽器進程(這里簡單說下Chrome瀏覽器多進程架構(gòu),其將瀏覽器分為:渲染進程、插件進程、GPU進程和瀏覽器主進程,瀏覽器主進程包含UI模塊、網(wǎng)絡(luò)模塊、文件模塊等),瀏覽器進程將其頁面內(nèi)容繪制到內(nèi)存中,最后再將內(nèi)存內(nèi)容顯示在屏幕上。

至此,HTML+CSS+JavaScript就能生成我們所看見的頁面了。

總結(jié)

一個完整的渲染流程大致如下:

  •  渲染進程將HTML內(nèi)存轉(zhuǎn)換為瀏覽器能夠識別的DOM數(shù)據(jù)結(jié)構(gòu)
  •  渲染引擎將CSS樣式表轉(zhuǎn)換為瀏覽器能夠識別的sytleSheets,計算出DOM節(jié)點的樣式
  •  創(chuàng)建布局樹,包括可見元素以及元素的位置計算
  •  渲染引擎為達到分層條件的節(jié)點生成對應(yīng)的圖層,所有圖層組合成一顆圖層樹
  •  生成圖層的繪制列表,記錄繪制順序和繪制指令
  •  有合成線程進行柵格化操作,將圖層劃分為圖塊,渲染進程把生成的圖塊發(fā)送給GPU,在GPU中執(zhí)行生成圖塊的位圖
  •  所有圖塊被柵格化之后,合成線程會發(fā)送繪制圖塊的命令給瀏覽器進程,在瀏覽器進程中進行圖塊合成并最紅顯示到屏幕上 

 

責任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2020-04-21 14:00:25

HTMLCSSJS

2013-04-26 13:50:46

程序員

2010-03-02 10:13:56

程序員面試

2020-12-07 11:29:24

ReactVueVue3

2015-02-03 02:40:33

程序員盲人程序員

2013-11-04 09:39:16

程序員信仰

2015-04-10 19:37:34

程序員

2012-07-20 11:16:26

程序員

2021-02-20 13:55:35

程序員計算機技術(shù)

2012-02-01 09:30:54

HTML 5

2009-07-16 09:12:16

程序員偷懶技巧

2015-11-17 09:30:23

程序員招聘建議

2013-07-24 14:17:10

2013-04-22 09:05:11

程序員

2013-04-17 10:28:40

程序員

2015-06-25 09:32:55

JavaScript程序員

2015-06-25 19:23:03

JavaScript程序員

2015-06-25 09:53:13

JavaScript程序員

2014-09-22 09:42:54

程序員

2014-03-04 09:43:23

程序員外包
點贊
收藏

51CTO技術(shù)棧公眾號

黑人中文字幕一区二区三区| 91精品国产入口在线| 久久日本片精品aaaaa国产| 欧美日韩在线高清| 欧美一区二区三区日韩| 肉色丝袜一区二区| 欧美xxxx做受欧美88bbw| 五月天亚洲综合| 日韩精品一区二区视频| 国产激情一区二区三区四区 | 在线观看国产日韩| 伊人久久综合| 在线观看男女av免费网址| 一个色的综合| 色黄久久久久久| 欧美国产一区二区在线观看| 自拍欧美一区| 人成在线免费视频| 日韩一区不卡| 日韩在线观看精品| 亚洲色图在线播放| 国产精品www994| 蜜桃在线视频| 国产又黄又大又粗视频| 2019亚洲日韩新视频| 黑人欧美xxxx| 蜜桃久久精品一区二区| 欧美午夜在线播放| 未来日记在线观看| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 日韩在线视频观看正片免费网站| 亚洲少妇最新在线视频| 亚洲黄色大片| 秋霞国产精品| av网站免费在线| 国产精品麻豆免费版| 亚洲国产成人精品久久| 国产欧美1区2区3区| 中文无码久久精品| 91九色国产在线播放| 亚洲国产精品无码观看久久| 欧美一乱一性一交一视频| 婷婷亚洲久悠悠色悠在线播放| 日韩精品一级二级 | 最近看过的日韩成人| 久久久91精品| 大荫蒂欧美视频另类xxxx| 轻轻草成人在线| 国产精品巨作av| 国产精品久久久久一区二区国产| 黄瓜视频免费观看在线观看www | 男女激烈动态图| 青青草一区二区| 日韩欧美一级二级三级久久久| 26uuu国产电影一区二区| 亚洲人成免费网站| 韩日精品一区| 伊人永久在线| 国产美女主播在线| 亚洲一区制服诱惑| 亚洲最新av在线网站| 都市激情亚洲色图| 高清不卡一区二区在线| 欧美激情成人| 久久福利在线| 国产福利电影在线| 中文字幕无码不卡免费视频| eeuss一区二区三区| 欧美成人黑人xx视频免费观看| 一本大道av一区二区在线播放| 从欧美一区二区三区| 亚洲九九视频| 日韩精品一区二区三区中文字幕 | 日韩av在线精品| 亚洲精品日日夜夜| 国产成人精品免费在线| 中国成人一区| 久久久91麻豆精品国产一区| av超碰免费在线| 国产精品久久久久永久免费看| 日本xxxxx18| 亚洲伊人一本大道中文字幕| 欧美俄罗斯乱妇| 日韩小视频在线观看专区| 亚洲免费三区一区二区| 国产在线视频精品一区| 在线不卡视频| 色婷婷狠狠五月综合天色拍| 国产高清中文字幕在线| 天堂v视频永久在线播放| 青草青青在线视频| 精品日韩美女| 日本91av在线播放| 在线成人免费网站| 欧美日韩电影在线播放| 亚洲综合999| 不卡一区二区在线| 日本亚洲三级在线| 91精品一区国产高清在线gif| 免费欧美网站| 韩国主播福利视频一区二区三区| 久草在现在线| 色偷偷福利视频| 日韩国产成人无码av毛片| 国产欧美综合精品一区二区| 91chinesevideo永久地址| 亚洲最新av在线网站| 欧美一区二区三区在线观看视频| 亚洲成人中文在线| 国产精品私人自拍| 成人黄色网址在线观看| 麻豆精品久久久| 亚洲国产精品第一区二区三区| 日本精品黄色| 91精品国产自产在线丝袜啪| 性高爱久久久久久久久| 色女人在线视频| av大片在线观看| 一级视频在线观看| 性史性dvd影片农村毛片| 性刺激的欧美三级视频| 777米奇影视第四色| 成人免费在线网| 亚洲精品高清国产一线久久| 久久久www免费人成黑人精品| 国产精品白丝jk喷水视频一区| 国模精品视频一区二区| 久久亚洲精品一区二区| www.亚洲成人| 中文字幕日韩在线播放| 在线观看国产精品日韩av| 亚洲精品美女久久| 日韩精品视频免费在线观看| 精品国产髙清在线看国产毛片| 日韩欧美卡一卡二| 7878成人国产在线观看| 欧美日韩综合一区| 欧美性欧美巨大黑白大战| 色综合中文字幕| 欧美特级www| 欧美性色综合网| 欧美日本视频在线| 欧美一级黄色大片| 欧美变态tickling挠脚心| 欧美一区二区三区思思人| 日韩欧美在线网站| 欧美一级精品在线| 精品电影一区二区| 亚洲第一区中文字幕| 日韩精品在线视频| 亚洲天堂av在线免费| 久久影院在线观看| 久久久噜久噜久久综合| 奇米4444一区二区三区| 国产精品久久久久久婷婷天堂| 91网站在线看| 国产日韩精品一区观看| 亚洲高清视频一区二区| 中文字幕第50页| 韩国一区二区av| 羞羞的视频网站| 久草在线新资源| 日本又骚又刺激的视频在线观看| 黄色毛片在线观看| 日本视频在线播放| bl视频在线免费观看| 88xx成人永久免费观看| 色妞ww精品视频7777| 思热99re视热频这里只精品| 日韩欧美一区二区三区在线视频| 一区二区在线| 男男视频亚洲欧美| 9色porny自拍视频一区二区| 亚洲欧洲国产日韩| 日韩欧美成人区| 精品久久一区二区三区| 国产亚洲精品久久久久动| 欧美激情国内偷拍| 国产一区二区在线免费视频| 精品欧美国产| 国产片侵犯亲女视频播放| 人人澡人人爽人人揉| 精品资源在线看| 蜜桃视频动漫在线播放| 超碰成人福利| 亚洲性感美女99在线| 国产精品亚洲人在线观看| 中文一区二区在线观看| 都市激情亚洲色图| 日韩hd视频在线观看| 欧美黑人又粗大| 91大片在线观看| 中文字幕一区综合| 色婷婷综合久久久久中文字幕| 污视频网站在线| 国产盗摄一区二区| 香蕉免费一区二区三区在线观看 | 一区二区三区在线免费观看| 欧美精品三级日韩久久| 亚洲系列中文字幕|