CSS會阻塞渲染嗎?怎么防止css阻塞

默認情況下,CSS 被視為阻塞渲染的資源,這意味著瀏覽器將不會渲染任何已處理的內(nèi)容,直至 CSSOM 構(gòu)建完畢。請務(wù)必精簡您的 CSS,盡快提供它,并利用媒體類型和查詢來解除對渲染的阻塞。

渲染樹構(gòu)建中,我們看到關(guān)鍵渲染路徑要求我們同時具有 DOM 和 CSSOM 才能構(gòu)建渲染樹。這會給性能造成嚴重影響:HTML 和 CSS 都是阻塞渲染的資源。 HTML 顯然是必需的,因為如果沒有 DOM,我們就沒有可渲染的內(nèi)容,但 CSS 的必要性可能就不太明顯。如果我們在 CSS 不阻塞渲染的情況下嘗試渲染一個普通網(wǎng)頁會怎樣?

摘要

  • 默認情況下,CSS 被視為阻塞渲染的資源。
  • 我們可以通過媒體類型和媒體查詢將一些 CSS 資源標記為不阻塞渲染。
  • 瀏覽器會下載所有 CSS 資源,無論阻塞還是不阻塞。

CSS 是阻塞渲染的資源。需要將它盡早、盡快地下載到客戶端,以便縮短首次渲染的時間。

不過,如果我們有一些 CSS 樣式只在特定條件下(例如顯示網(wǎng)頁或?qū)⒕W(wǎng)頁投影到大型顯示器上時)使用,又該如何?如果這些資源不阻塞渲染,該有多好。

我們可以通過 CSS“媒體類型”和“媒體查詢”來解決這類用例:

<link href="style.css" rel="stylesheet">
<link href="print.css" rel="stylesheet" media="print">
<link href="other.css" rel="stylesheet" media="(min-width: 40em)">

媒體查詢由媒體類型以及零個或多個檢查特定媒體特征狀況的表達式組成。例如,上面的第一個樣式表聲明未提供任何媒體類型或查詢,因此它適用于所有情況,也就是說,它始終會阻塞渲染。第二個樣式表則不然,它只在打印內(nèi)容時適用---或許您想重新安排布局、更改字體等等,因此在網(wǎng)頁首次加載時,該樣式表不需要阻塞渲染。最后,最后一個樣式表聲明提供由瀏覽器執(zhí)行的“媒體查詢”:符合條件時,瀏覽器將阻塞渲染,直至樣式表下載并處理完畢。

通過使用媒體查詢,我們可以根據(jù)特定用例(比如顯示或打?。部梢愿鶕?jù)動態(tài)情況(比如屏幕方向變化、尺寸調(diào)整事件等)定制外觀。聲明您的樣式表資產(chǎn)時,請密切注意媒體類型和查詢,因為它們將嚴重影響關(guān)鍵渲染路徑的性能。

讓我們考慮下面這些實例:

<link href="style.css"    rel="stylesheet">
<link href="style.css"    rel="stylesheet" media="all">
<link href="portrait.css" rel="stylesheet" media="orientation:portrait">
<link href="print.css"    rel="stylesheet" media="print">
  • 第一個聲明阻塞渲染,適用于所有情況。
  • 第二個聲明同樣阻塞渲染:“all”是默認類型,如果您不指定任何類型,則隱式設(shè)置為“all”。因此,第一個聲明和第二個聲明實際上是等效的。
  • 第三個聲明具有動態(tài)媒體查詢,將在網(wǎng)頁加載時計算。根據(jù)網(wǎng)頁加載時設(shè)備的方向,portrait.css 可能阻塞渲染,也可能不阻塞渲染。
  • 最后一個聲明只在打印網(wǎng)頁時應(yīng)用,因此網(wǎng)頁首次在瀏覽器中加載時,它不會阻塞渲染。
    最后,請注意“阻塞渲染”僅是指瀏覽器是否需要暫停網(wǎng)頁的首次渲染,直至該資源準備就緒。無論哪一種情況,瀏覽器仍會下載 CSS 資產(chǎn),只不過不阻塞渲染的資源優(yōu)先級較低罷了。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 14,199評論 1 92
  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,860評論 1 19
  • 年弟子問老師:“您能談?wù)勅祟惖钠婀种巻??”老師答道:“他們急于成長,然后又哀嘆失去的童年。他們以健康換取金錢,不...
    海靜身心靈瑜伽閱讀 854評論 0 0
  • 剛剛結(jié)束了第一期的私教課,然后想談?wù)勱P(guān)于健身。最初接觸健身,是15年在上海實習的時候無意間看到了一個學姐上私教課的...
    Poppy_Myoung閱讀 820評論 0 3
  • 曾經(jīng)的等待粉碎在一剎化作霧霾, 曾經(jīng)的執(zhí)著隕落在一瞬流向滄海。 曾經(jīng)的思念沸騰在一秒冷卻成皚。 曾經(jīng)的少年, 依然...
    那個詩人閱讀 218評論 0 0

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