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