文章目錄
-
-
-
- 浏覽器核心
- 浏覽器主要元件結構:
- 浏覽器功能
- 浏覽器的渲染流程
- css書寫順序
- 注意
-
-
浏覽器核心
(1)Trident核心,由于被微軟采用,并得益于微軟作業系統的普及,以前幾乎一統天下,是以又稱為“IE核心”,主要浏覽器有IE系列浏覽器;
(2)Gecko核心,因為被Mozilla FireFox浏覽器采用并得到開發者的進一步豐富,又被稱為“Firefox核心”;
(3)WebKit核心,是Safari浏覽器使用的核心,由Apple研發。 Google Chrome、Opera及各種國産浏覽器高速模式也使用Webkit作為核心。
(4)Blink核心,由Google和Opera Software共同開發的浏覽器核心,現在Chrome(28及往後版本)、Opera(15及往後版本)都将Webkit核心換成了Blink核心。
浏覽器主要元件結構:
浏覽器功能
1、輸入網址。
2、浏覽器查找域名的IP位址。
3. 浏覽器給web伺服器發送一個HTTP請求
4. 網站服務的永久重定向響應
5. 浏覽器跟蹤重定向位址 現在,浏覽器知道了要通路的正确位址,是以它會發送另一個擷取請求。
6. 伺服器“處理”請求,伺服器接收到擷取請求,然後處理并傳回一個響應。
7. 伺服器發回一個HTML響應
8. 浏覽器開始顯示HTML
9. 浏覽器發送請求,以擷取嵌入在HTML中的對象。在浏覽器顯示HTML時,它會注意到需要擷取其他位址内容的标簽。這時,浏覽器會發送一個擷取請求來重新獲得這些檔案。這些檔案就包括CSS/JS/圖檔等資源,這些資源的位址都要經曆一個和HTML讀取類似的過程。是以浏覽器會在DNS中查找這些域名,發送請求,重定向等等…
浏覽器的渲染流程
①解析html建構dom樹,解析css建構css樹:将html解析成樹形的資料結構,将css解析成樹形的資料結構
②建構render樹:DOM樹和CSS樹合并之後形成的render樹。
③布局render樹:有了render樹,浏覽器已經知道那些網頁中有哪些節點,各個節點的css定義和以及它們的從屬關系,進而計算出每個節點在螢幕中的位置。
④繪制render樹:按照計算出來的規則,通過顯示卡把内容畫在螢幕上。
css書寫順序
目的: 減少浏覽器reflow(回流),提升浏覽器渲染dom的性能
1>.Reflow(回流):浏覽器要花時間去渲染,當它發現了某個部分發生了變化影響了布局,那就需要倒回去重新渲染。
2>.Repaint(重繪):如果隻是改變了某個元素的背景顔色,文字顔色等,不影響元素周圍或内部布局的屬性,将隻會引起浏覽器的repaint,重畫某一部分。
Reflow要比Repaint更花費時間,也就更影響性能。
(1)定位屬性:position display float left top right bottom overflow clear z-index
(2)自身屬性:width height padding border margin background
(3)文字樣式:font-family font-size font-style font-weight font-varient color
(4)文本屬性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow
(5)css3中新增屬性:content box-shadow border-radius transform……
注意
(1)dom深度盡量淺。
(2)減少inline javascript、css的數量。
(3)使用現代合法的css屬性。
(4)不要為id選擇器指定類名或是标簽,因為id可以唯一确定一個元素。
(5)避免後代選擇符,盡量使用子選擇符。原因:子元素比對符的機率要大于後代元素比對符。
(6)避免使用通配符
(7)display:none 的節點不會被加入Render Tree,而visibility: hidden 則會,是以,如果某個節點最開始是不顯示的,設為display:none是更優的。
(8)display:none 會觸發 reflow,而 visibility:hidden 隻會觸發 repaint,因為沒有發現位置變化。
(9)有些情況下,比如修改了元素的樣式,浏覽器并不會立刻reflow 或 repaint 一次,而是會把這樣的操作積攢一批,然後做一次 reflow,這又叫異步 reflow 或增量異步 reflow。但是在有些情況下,比如resize 視窗,改變了頁面預設的字型等。對于這些操作,浏覽器會馬上進行 reflow。
參考:
網頁在浏覽器上的渲染過程