對於問題多多的ie678,fouc(flash of unstyled content)——瀏覽器樣式閃爍是乙個不可忽視的話題,但對於ever green的瀏覽器就不用理會了嗎?下面嘗試較全面地解密fouc。
頁面載入解析時,頁面以樣式a渲染;當頁面載入解析完成後,頁面突然以樣式b渲染,導致出現頁面樣式閃爍。
樣式a,瀏覽器預設樣式 或 瀏覽器預設樣式 層疊 部分已載入的頁面樣式;
樣式b,瀏覽器預設樣式 疊加 全部頁面樣式。
瀏覽器以user agent stylesheet(瀏覽器內建樣式)為原料構建cssom tree;
dom tree+cssom tree構建出render tree,然後頁面內容渲染出來;
當解析到inline stylesheet 或 internal stylesheet時,馬上重新整理cssom tree,cssom tree或dom tree發生變化時會引起render tree變化;
,
and
@import url("")
會阻塞渲染。
示例1:阻塞解析
hi
示例2:阻塞渲染
hi
示例3:阻塞渲染
hi
示例4:阻塞渲染
hi示例1:阻塞渲染
hi示例2:阻塞渲染
hi示例1:
hi
示例2:
hi
上面的示例表明,ie下block rendering等價於block parsing,因為連img
,script
,link
,@import url()
資源請求都會被阻塞。
現在我們知道fouc時由於頁面採用臨時樣式來渲染頁面而導致的,其中僅有chrome能好的遮蔽了這一點,而其他瀏覽器就呵呵了。那有什麼方案可以解決呢?其實我們的目的就是不要讓使用者看到臨時樣式,那麼我們可以隱藏body
,當樣式資源載入完成後再顯示body
。
(編譯modernizr時記得勾setclasses哦,否則不會替換no-js的!)
flash of unstyled content
the fouc problem
critical rendering path
CSS魔法堂 Position定位詳解
一 position各屬性值詳解 1.static 預設值,元素將按照正常文件流規則排列。2.relative 相對定位,元素仍然處於正常文件流當中,但可以通過left top right和bottom的css規則來改變元素的位置。注意點 a 元素原來位置將保留,不被其他元素所佔據 b 當使用lef...
CSS魔法堂 Position定位詳解
一 position各屬性值詳解 1.static 預設值,元素將按照正常文件流規則排列。2.relative 相對定位,元素仍然處於正常文件流當中,但可以通過left top right和bottom的css規則來改變元素的位置。注意點 a 元素原來位置將保留,不被其他元素所佔據 b 當使用lef...
CSS魔法堂 Position定位詳解
一 position各屬性值詳解 1.static 預設值,元素將按照正常文件流規則排列。2.relative 相對定位,元素仍然處於正常文件流當中,但可以通過left top right和bottom的css規則來改變元素的位置。注意點 a 元素原來位置將保留,不被其他元素所佔據 b 當使用lef...