CSS對Web頁面載入效率的影響分析摘要_經驗交流
我們羅列了十幾條相關的知識與注意點,大家可以係統的探討一下,讓我們寫的Web頁面開啟更加流暢。
請不要告訴我,你看不懂E文,只是你不願意看!!!
一、風格系統如何打破規則
1.1、ID 規則
第一類由那些以 ID 選擇器為鍵選擇器的規則所組成。
button#backButton { } /* 這是一條 ID 分類規則*/
#urlBar[type="autocomplete"] { } /* 這是一條 ID 分類規則*/
treeitem > Treerow>treecell#myCell:active{} /*這是一個ID 分類的規則*/
1.2、類別規則
如果一個規則指定了一個類別作為其鍵選擇器,那麼它就屬於這個類別。
button.toolbarButton { } /* 基於類別的規則 */
.fancyText { } /* 基於類別的規則 */
menuitem > .menu-left[checked="true"] { } /* 基於類別的規則*/
1.3、標籤規則
如果沒有將類別或ID 指定為鍵選擇器,則規則的下一個潛在類別是標籤類別。如果規則指定了一個標籤作為其鍵選擇器,則該規則屬於此類。
td { } /* 基於標籤的規則 */
treeitem > treerow { } /* 基於標籤的規則 */
input[type="checkbox"] { } /基於標籤的規則*/
:table { } /* 一般規則 */
[hidden="true"] { } /* 一般規則 */
* { } /* 一般規則*/ tree > [collapsed="true"] { } /* 通用規則*/
2、樣式系統如何匹配規則
樣式系統透過從最右邊的選擇器開始匹配規則,通過規則的選擇器向左移動。只要您的小子樹繼續簽出,樣式系統就會繼續向左移動,直到它匹配規則或因不匹配而退出。
您的第一道防線是根據鍵選擇器的類型進行的規則過濾。此分類的目的是過濾掉規則,以便您甚至不必浪費時間嘗試匹配它們。這是大幅提高效能的關鍵。您甚至需要檢查給定元素的規則越少,樣式解析速度就越快。舉例來說,如果您的元素有 ID,則只會檢查與您的元素 ID 相符的 ID 規則。只會檢查在您的元素上找到的類別的類別規則。只會檢查與您的標籤相符的標籤規則。通用規則將始終受到檢查。
確保規則不會出現在通用類別中!
3.2、不要使用標籤名稱或類別來限定 ID 分類規則
如果您有一個以 ID 選擇器作為其鍵選擇器的樣式規則,則不必費心將標籤名稱新增至規則。ID 是唯一的,因此您無緣無故地減慢了匹配速度。
BAD - button#backButton { }
不好 - .menu-left#newMenuIcon { }
好 - #backButton { }
好 - #newMenuIcon{ }
好 - #newMenuIcon不符合班級資格- 帶有標籤名稱的分類規則
與上面的規則類似,我們所有的類別都是唯一的。您應該使用的約定是在類別名稱中包含標籤名稱。
BAD - treecell.indented { }
好- .treecell 縮排 { }
3.4、試著將規則放入最具體的類別中!
我們系統速度緩慢的最大原因是標籤類別中有太多規則。透過為我們的元素添加類,我們可以進一步將這些規則細分為類類別,然後我們不再浪費時間嘗試為給定標籤匹配盡可能多的規則。
壞 - Treeitem[mailfolder="true"] > Treerow > Treecell { }
好 - .treecell-mailfolder { }
後代選擇器是 CSS 中最昂貴的選擇器。它非常昂貴,特別是如果使用選擇器的規則位於標籤或通用類別中。通常,真正需要的是子選擇器。未經皮膚模組所有者的明確批准,UI CSS 中禁止使用後代選擇器。
不好- Treehead Treerow TreeCell { }
更好,但仍然不好(請參閱下一個指南) - Treehead > Treerow > TreeCell { }
避免將子選擇器與標籤分類規則一起使用。對於該元素的所有出現,您將大大增加匹配時間(特別是如果規則很可能更頻繁地匹配)。
BAD - treehead > treerow > treecell { }
BEST - .treecell-header { }
3.7、質疑子選擇器的所有用法!
使用子選擇器時要小心。如果您能想出一種方法來避免必須使用它,那就這樣做。特別是,子選擇器經常與 RDF 樹和選單一起使用,如下所示。
BAD -treeitem[IsImapServer="true"]>treerow>.tree-folderpane-icon{}}
請記住,RDF 中的屬性可以在範本中複製!利用這一事實,在希望根據該屬性進行更改的子 XUL 元素上複製 RDF 屬性。
好 - .tree-folderpane-icon[IsImapServer="true"] { }
3.8、依賴繼承!
了解哪些屬性可以繼承,並允許它們繼承!我們明確設定了 XUL 小部件,以便您可以在父標籤上放置清單樣式圖像(僅一個範例)或字體規則,並且它將過濾到匿名內容。您不必浪費時間編寫直接與匿名內容對話的規則。
不好 - #bookmarkMenuItem > .menu-left { list-style-image: url(blah); }
好 - #bookmarkMenuItem { list-style-image: url(blah);在上面的範例中,對匿名內容進行樣式化的願望(不理解清單樣式圖像繼承)導致了一條位於類別類別中的規則,而該規則實際上應該最終出現在最所有類別中的特定類別,即ID 類別。
請記住,尤其是匿名內容,它們都有相同的類別!上面的錯誤規則會導致檢查每個選單的圖示以查看它是否包含在書籤選單項目中。這是非常昂貴的(因為有很多菜單);除了書籤菜單之外,任何菜單都不應該檢查這條規則。
3.9.使用-moz-image-region!
將一堆影像放入單一影像檔案中並使用 -moz-image-region 選擇它們的效果明顯優於將每個影像放入自己的檔案中。
原始文件資訊-作者:David Hyatt

熱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 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

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

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

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

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

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

Bootstrap 提供了設置導航欄的簡單指南:引入 Bootstrap 庫創建導航欄容器添加品牌標識創建導航鏈接添加其他元素(可選)調整樣式(可選)
