在前端開發時,一般會使用CSS來美化網頁的樣式。而JavaScript常常用來操作DOM節點,以及一些數據處理等。但是,在使用JavaScript的時候,由于其執行是有序的,如果頁面上有阻塞JavaScript的加載,那么整個頁面的加載也將受到影響。其中,使用JavaScript加載CSS也可能會對頁面的渲染造成阻塞。
// 動態加載CSS const link = document.createElement('link'); link.href = 'path/to/css'; link.rel = 'stylesheet'; document.head.appendChild(link);
這段代碼可以動態地向頁面中添加CSS文件。但是,由于CSS是阻塞資源,當這個CSS文件較大,加載速度較慢時,頁面的渲染也就會因此受到影響。在這種情況下,我們可使用標簽,指定CSS文件的加載優先級為高,以解決樣式造成的阻塞。例如:
// 定義link標簽 const link = document.createElement('link'); link.href = 'path/to/css'; link.rel = 'preload'; link.as = 'style'; link.onload = function() { link.rel = 'stylesheet'; } // 將定義好的link標簽添加到head中 document.head.appendChild(link);
通過將標簽的rel屬性設置為preload,將as屬性設置為style,將該CSS文件的加載優先級設置為高。當頁面開始加載時,瀏覽器會優先加載該CSS文件,以避免在頁面渲染時發生阻塞。并且,CSS文件加載完成后,該文件的rel屬性將再次被設置為stylesheet,以告訴瀏覽器該CSS文件已經準備好被渲染了。
上一篇js中給類名寫css樣式
下一篇js判斷設備改變css