在網(wǎng)頁加載過程中,CSS樣式表的加載是非常重要的一部分,然而加載CSS文件有可能會導(dǎo)致頁面阻塞。本文將介紹如何加載CSS文件不阻塞頁面,提高頁面加載速度。
CSS樣式表可以分為內(nèi)部樣式和外部樣式。內(nèi)部樣式指的是直接將樣式寫入HTML文件的<style>標(biāo)簽中,而外部樣式則是通過<link>標(biāo)簽外部鏈接一個.css文件。
加載外部樣式時,可以使用以下方法進(jìn)行非阻塞加載。
<link href="style.css" rel="stylesheet" media="all" onload="if(media!='all')media='all'"/> <noscript><link href="style.css" rel="stylesheet" media="all"/></noscript>
上述代碼中,使用了兩個<link>標(biāo)簽。第一個標(biāo)簽中的media="all"表示樣式應(yīng)用于所有媒體類型。通過onload事件,當(dāng)CSS文件加載完成后,判斷media屬性是否為"all",如果不是則將其設(shè)置為"all"。這樣可以解決在移動端機(jī)型中,由于加載CDN比較慢而導(dǎo)致頁面無法正常顯示樣式的問題。
而第二個標(biāo)簽中,使用了<noscript>標(biāo)簽。該標(biāo)簽用于在瀏覽器禁用JavaScript時提供替代內(nèi)容。在<noscript>標(biāo)簽中鏈接CSS文件,因為禁用JavaScript的用戶不會執(zhí)行第一個標(biāo)簽中的JS代碼,但是可以加載該標(biāo)簽中的CSS文件。
除了以上方法,還可以使用defer和async屬性。defer屬性表示腳本將在頁面解析完畢后執(zhí)行,而async屬性表示腳本在下載完成后立即執(zhí)行。但是這兩個屬性只適用于外部JavaScript文件,加載CSS文件無法使用。
總結(jié):在加載CSS文件時,及時去處理頁面改變會更好,比如直接在
標(biāo)簽中嵌入CSS或者使用以上方法實現(xiàn)無阻塞加載,使用戶在等待頁面加載的同時也能獲得更好的交互體驗。