白屏問題和FOUC

白屏問題

  1. 白屏的根本原因是瀏覽器在渲染的時候沒有請求到或請求時間過長造成的。
  2. 瀏覽器對于圖片和CSS,在加載時會并發加載(比如一個域名下同時加載多個文件),瀏覽器對于JavaScript,在加載時會禁用并發,并且阻止其后的文件及組件的下載。所以將js放在頁面的頂部也可能會導致白屏。
  3. 不同瀏覽器的處理CSS和HTML的方式是不同的:
    比如,IE、chrome瀏覽器的渲染機制,采用的是等CSS全部加載解析完后再渲染展示頁面。
    Firefox則是在CSS未加載前先展示html的內容,等CSS加載后重新對樣式進行修改。

所以:白屏的出現情況往往因為CSS樣式被置于底部(最后加載),當新窗口打開,刷新等的時候,頁面會出現白屏。
如果使用 @import標簽,它引用的文件則會等頁面全部下載完畢再被加載,也可能出現白屏。

因此,
css使用 link 標簽將樣式表放在頂部,防止白屏問題出現。
JS 的放置位置一般是在body的閉合標簽之前。

白屏不是bug,而是由于瀏覽器的渲染機制。

FOUC

FOUC (Flash of Unstyled Content) 無樣式內容閃爍:
如果把樣式放在底部,對于IE瀏覽器,在某些場景下(點擊鏈接,輸入URL,使用書簽進入等),會出現 FOUC 現象(逐步加載無樣式的內容,等CSS加載后頁面才突然展現出樣式)。對于 Firefox 會一直表現出 FOUC 。

  • 腳本會阻塞后面內容的呈現
  • 腳本會阻塞其后組件的下載

對于圖片和CSS, 在加載時會并發加載(如一個域名下同時加載兩個文件)。但在加載 JavaScript 時,會禁用并發,并且阻止其他內容的下載。

所以盡量把 JavaScript 放入頁面body底部。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 白屏問題 如果把樣式放在底部,對于IE瀏覽器,chrome等(css全部加載后再呈現,有可能等待長),在某些場景下...
    727上上上閱讀 990評論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • 一:在制作一個Web應用或Web站點的過程中,你是如何考慮他的UI、安全性、高性能、SEO、可維護性以及技術因素的...
    Arno_z閱讀 1,212評論 0 1
  • 感覺什么都好,又感覺什么都不好?你好就可以了!
    莊德坤閱讀 300評論 0 0
  • 心心念念登上泰山看日出,在五一假期如愿。 1. 泰山美景 2. 美麗的日出 3. 泰山,人山人海 4. 黑夜,用生...
    伊晴閱讀 777評論 2 0