JS相關概念

CSS和JS在網(wǎng)頁中的放置順序是怎樣的

CSS通過link標簽引入,放置在<head>標簽內(nèi)。
JS放置在頁面底部,通過<script>標簽引入,放置在body的閉合標簽之前。


解釋白屏和FOUC

  • 白屏:
    對于chrome、IE等瀏覽器,頁面渲染需要等到HTML頁面DOM樹和CSS的CSSOM樹構建完畢后,兩者結合形成render tree后,才對頁面進行渲染繪制。
    當CSS文件放于頁面底部,會影響CSS的加載時間,因此在CSS沒有全部加載并形成render tree之前,頁面都處于空白狀態(tài),會導致白屏;如果使用@import標簽,即使CSS放于頭部,也可能出現(xiàn)白屏現(xiàn)象。
    當JavaScript文件放于頁面頭部時,JavaScript會禁用并發(fā)加載,阻塞JavaScript后面內(nèi)容的呈現(xiàn)及后面組件的下載,等到JavaScript文件全部加載完成后才會繼續(xù)執(zhí)行之后的代碼,因此JavaScript文件放于頭部也會導致頁面白屏現(xiàn)象。
  • FOUC:
    對于Firefox瀏覽器,DOM樹的構建與CSS的渲染時同步進行的。所以當CSS樣式置于頁面底部時,首先瀏覽器會對HTML的元素進行展示,當CSS全部加載完成后對樣式進行修改,出現(xiàn)FOUS現(xiàn)象。
    如果把CSS樣式放在底部,對于IE瀏覽器,在某些場景下(點擊鏈接,輸入URL,使用書簽進入等),也會出現(xiàn) FOUC 現(xiàn)象。

async和defer的作用是什么?有什么區(qū)別

async和defer是異步加載腳本的的屬性。

<script async src="script.js"></script>
加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進行(異步)。同時出現(xiàn)幾個具有async屬性的js文件,async屬性不保證按照它們的先后順序執(zhí)行。

<script deferc src="script.js"></script>
加載script.js文件后面的文檔元素過程將和script.js的加載異步進行,但 script.js 的執(zhí)行要在所有元素解析完成之后,DOMContentLoaded 事件觸發(fā)之前完成。


簡述網(wǎng)頁的渲染機制

  1. 解析 HTML 標簽, 構建 DOM 樹
  2. 解析 CSS 標簽, 構建 CSSOM 樹
  3. 把 DOM 和 CSSOM 組合成 渲染樹 (render tree)
  4. 在渲染樹的基礎上進行布局, 計算每個節(jié)點的幾何結構
  5. 把每個節(jié)點繪制到屏幕上 (painting)
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的? css放在head標簽內(nèi),防止渲染時出現(xiàn)白屏 js放在最后body...
    billa_8f6b閱讀 635評論 0 0
  • 簡單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網(wǎng)而生,回顧它的歷史要從瀏覽器的歷史講起。 19...
    _Dot912閱讀 614評論 0 3
  • 1、CSS和JS在網(wǎng)頁中的放置順序是怎樣的? (1)CSS 對于谷歌瀏覽器和Safari放在head里或body里...
    徐國軍_plus閱讀 554評論 0 0
  • 1,CSS和JS在網(wǎng)頁中的放置順序是怎樣的? 網(wǎng)站加載的整個完整過程是:1、首先瀏覽器從服務器接收到html代碼,...
    進擊的前端_風笑影閱讀 345評論 0 0
  • 任務 CSS和JS在網(wǎng)頁中的放置順序是怎樣的? 解釋白屏和FOUC async和defer的作用是什么?有什么區(qū)別...
    mhy_web閱讀 603評論 0 1

友情鏈接更多精彩內(nèi)容