白屏和FOUC
(無樣式內容閃爍)均是由于不同的瀏覽器渲染機制導致的問題臀栈。
白屏主要發(fā)生在IE
上,FOUC
主要發(fā)生在Firefox
上
白屏:在瀏覽器和用戶等待位于底部的樣式表時挠乳,瀏覽器會延遲顯示任何可視化組件权薯,即所謂的白屏現(xiàn)象
FOUC
:頁面在樣式表下載解析之前,組件就已經(jīng)逐步加載顯示睡扬,當樣式表解析完成后盟蚣,已經(jīng)顯示的組件就要用新的樣式進行繪制,這就導致所謂的無樣式內容閃爍
原因:
在
Firefox
里卖怜,無論樣式表至于頂部還是底部屎开,總是采用逐步呈現(xiàn)的方式來加載組件。因此马靠,若樣式不是最終呈現(xiàn)所必需的奄抽,則用戶基本感覺不到有什么差別蔼两;反之當樣式為呈現(xiàn)所必需的時候,則會呈現(xiàn)無樣式內容閃爍在
IE
里復雜一點逞度。如果頁面組件已經(jīng)加載顯示完畢额划,但CSS
慢一點才加載解析完畢,這時用戶就會發(fā)現(xiàn)原先顯示的頁面所呈現(xiàn)的方式跟最初看到的不一樣档泽。這種用戶體驗其實是很差的锁孟,為了防止這種情況的出現(xiàn),IE
會阻止頁面的逐步呈現(xiàn)直至樣式表加載解析完畢茁瘦,然后頁面所有內容呈現(xiàn)在計算機屏幕上
建議:
- 將樣式表置于
head
標簽中
2.將js
腳本置于底部,因為js
腳本會阻塞內容的呈現(xiàn)和后面組件的下載储笑。對于圖片和CSS
會并發(fā)加載甜熔,但在加載js
時,會禁用并發(fā)突倍,并且組織其他內容的下載腔稀,所以把js
放在頂部也會導致白屏現(xiàn)象