重排和重繪是瀏覽器關(guān)鍵渲染路徑上的兩個(gè)節(jié)點(diǎn)盖溺, 瀏覽器的關(guān)鍵渲染路徑就是 DOM 和 CSSOM 生成渲染樹(shù)蝌蹂,然后根據(jù)渲染樹(shù)通過(guò)一個(gè)布局(也叫 layout)步驟來(lái)確定頁(yè)面上所有內(nèi)容的大小和位置铣墨,確定布局后座硕,將像素 繪制 (也叫 Paint)到屏幕上莱没。
其中重排就是當(dāng)元素的位置發(fā)生變動(dòng)的時(shí)候胁编,瀏覽器重新執(zhí)行布局這個(gè)步驟,來(lái)重新確定頁(yè)面上內(nèi)容的大小和位置专酗,確定完之后就會(huì)進(jìn)行重新繪制到屏幕上睹逃,所以重排一定會(huì)導(dǎo)致重繪。
如果元素位置沒(méi)有發(fā)生變動(dòng)祷肯,僅僅只是樣式發(fā)生變動(dòng)沉填,這個(gè)時(shí)候?yàn)g覽器重新渲染的時(shí)候會(huì)跳過(guò)布局步驟,直接進(jìn)入繪制步驟佑笋,這就是重繪翼闹,所以重繪不一定會(huì)導(dǎo)致重排。