淺析CSS 的載入及載入順序
本文很適合基礎及小夥伴們,本文主要給大家介紹CSS 的加載及加載順序以及遇到的問題思路解析,文中也給大家補充介紹了關於html,css,js三者的加載順序問題,需要的朋友參考下吧,希望能幫助大家。
通常的css載入順序
一般情況下,我們css樣式表是放在頭部,同時為了減少請求,我們通常會對css進行一個合併壓縮。 目前我們css一般是如下載入的:
<head> <link rel="stylesheet" href="/all-of-my-styles.css"> </head> <body> …content… </body>
這樣可以,但是有幾個效能問題,我們可以繼續優化:
問題:
所有的css都合併壓縮成一個文件,放在頁面頭部載入。可能首屏我們只用到一點點css,卻在頭部加載了所有的css,造成資源的不合理加載和浪費。假如css很大,嚴重影響網頁載入速度和首屏顯示速度。
換個想法
假如不合併,單一css壓縮引用,檔案大小是小了,但是請求數量多了一些。 權衡二者,並且進行性能測試對比,發現如下寫法確實比我們所有css放在頭部一次性加載,首屏顯示速度要快些:
<head> </head> <body> <!-- HTTP/2 push this resource, or inline it, whichever's faster --> <link rel="stylesheet" href="/site-header.css"> <header>…</header> <link rel="stylesheet" href="/article.css"> <main>…</main> <link rel="stylesheet" href="/comment.css"> <section class="comments">…</section> <link rel="stylesheet" href="/about-me.css"> <section class="about-me">…</section> <link rel="stylesheet" href="/site-footer.css"> <footer>…</footer> </body>
但是還是有性能可以優化的地方!
例如:
我們首屏僅顯示了頭部和文章,其他模組首屏不顯示。那麼,其他模組的css我們可以完全非同步來載入。如何異步加載呢?
請看下面
loadCSS 及Preload
關於preload,推進2篇文章給大家看下:
#1、透過rel="preload"進行內容預先載入:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Preloading_content
2、preload 的w3文件:https://www.w3.org/TR /preload/
對於一些不是首屏載入的css,我們可以如下寫法:
<link rel="preload" href="path/to/haorooms.css" as="style" onload="this.rel='stylesheet'">
防止瀏覽器禁止js,保險起見,也可以如下:
<link rel="preload" href="path/to/haorooms.css" as="style" onload="this.rel='stylesheet'">
為了避免有些瀏覽器會重新呼叫處理程序rel='stylesheet'這個屬性,我們一般推薦如下寫法:
<link rel="preload" href="path/to/haorooms.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="path/to/haorooms.css"></noscript>
為了更好的相容rel=preload,可以使用loadCSS ,github位址: https:/ /github.com/filamentgroup/loadCSS
因此, 不考慮瀏覽器相容問題的情況下(考慮相容問題,可以使用loadCss,這裡不多示範),我們對上面程式碼再次進行最佳化:
<head> <link rel="stylesheet" href="/首屏加载css.css"> <link rel="preload" href="/不是首屏加载的css.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> </head> <body> <header>…</header> <main>…</main> <section class="comments">…</section> <section class="about-me">…</section> <footer>…</footer> </body>
PS:下面看下關於html,css,js三者的載入順序問題
<head lang="en"> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="css/*.css"> <script src="js/*.js></script> </head>
DOM文檔的載入順序是由上而下的順序載入;
1 、DOM載入到link標籤
css檔案的載入是與DOM的載入並行的,也就是說,css在載入時Dom還在繼續載入構建,而過程中遇到的css樣式或img,則會向伺服器發送請求,待資源返回後,將其添加到dom中的相對應位置中;
#2、DOM加載到script標籤
由於js檔案不會與DOM並行加載,因此需要等待js整個文件加載完之後才能繼續DOM的加載,倘若js腳本文件過大,則可能導致瀏覽器頁面顯示滯後,出現“假死”狀態,這種效應稱之為“阻塞效應」;會導致出現非常不好的使用者體驗;
而這個特性也是為什麼在js檔案中開頭需要$(document).ready(function(){})或(function(){})或window.onload,也就是讓DOM文件載入完成之後才執行js文件,這樣才不會出現查找不到DOM節點等問題;
js阻塞其他資源的載入的原因是:瀏覽器為了防止js修改DOM樹,需要重新建構DOM樹的情況出現;
3、解決方法
前提,js是外部腳本;
在script標籤中加入defer =“ture”,則會讓js與DOM並行加載,待頁面加載完成後再執行js文件,這樣則不存在阻塞;
在scirpt標籤中添加async=“ture”,這個屬性告訴瀏覽器該js檔案是非同步載入執行的,也就是不依賴其他js和css,也就是說無法保證js檔案的載入順序,但是同樣有與DOM並行載入的效果;
同時使用defer和async屬性時,defer屬性會失效;
可以將scirpt標籤放在body標籤之後,這樣就不會出現載入的衝突了。
相關推薦:
以上是淺析CSS 的載入及載入順序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

答案:可以使用 Bootstrap 的日期選擇器組件在頁面中查看日期。步驟:引入 Bootstrap 框架。在 HTML 中創建日期選擇器輸入框。 Bootstrap 將自動為選擇器添加樣式。使用 JavaScript 獲取選定的日期。

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

在 Bootstrap 中驗證日期,需遵循以下步驟:引入必需的腳本和样式;初始化日期選擇器組件;設置 data-bv-date 屬性以啟用驗證;配置驗證規則(如日期格式、錯誤消息等);集成 Bootstrap 驗證框架,並在表單提交時自動驗證日期輸入。
