1. 程式人生 > >瀏覽器重繪和重排

瀏覽器重繪和重排

時間:2017年4月25日12:40:06

    前端開發崗位是一個知識範圍比較綜合的一個崗位,需要了解和探究的知識很多,因此,可以從廣度和深度兩個方面著手,初級工程師以廣度學習為主,高階工程師以深度研究為主。

    瀏覽器引擎解析web專案的過程:下載資源(HTML、CSS、JS、圖片),構建DOM樹(頁面結構),將HTML元素放置到文件流中正確的位置,構建渲染樹(DOM節點樣式),再根據渲染樹節點的樣式屬性繪製出頁面。
    瀏覽器重繪(redraw)和重排(reflow),重排也稱迴流:
    重繪,是DOM元素樣式改變所觸發的瀏覽器行為,瀏覽器會根據DOM元素的新樣式重新繪製渲染,使元素呈現新的外觀。
    重排,是DOM樹變化所觸發的瀏覽器行為,瀏覽器會重新構建DOM樹及其後期渲染。

    重排發生的情景:頁面渲染初始化、瀏覽器視窗改變、DOM元素幾何屬性(width,height)變化、可見DOM元素的增刪、DOM樹的結構發生變化、獲取某些DOM元素頂層屬性(如, offsetWidth、offsetHeight、scrollTop、scrollLeft...)等。
    重繪不一定觸發瀏覽器重排,重排一定會觸發瀏覽器重繪。

引申:

    web頁面的文件流:DOM元素中的可顯示元素在排列時所佔用的位置,將瀏覽器視窗自上而下分成一行一行, 並在每行中按從左至右的順序排放元素,即為文件流。
    文件流是相對於盒子模型而言,文字流是相對於文欄位落而言,浮動(float)元素,絕對定位(absolute)元素,固定定位(fixed)元素,都會脫離文件流,即該元素會從其父元素或兄弟元素中脫離而出,不屬於文件流。