css優先權對於某些朋友來說可能會感覺不太好理解,所以這篇文章將帶大家來深入了解一下css的樣式優先級以及css選擇器優先級的計算方法。
對於css樣式優先權理解它的最佳方法是從一個例子開始。然後我們將仔細研究如何計算實際優先順序以確定哪個選擇器優先順序。
PS:推薦學習:CSS影片教學
下面是一個簡單的無序列表:
<ul id="summer-drinks"> <li>汽水</li> <li>啤酒</li> <li>果汁</li></ul>
如果現在你要指定其中一種你喜歡的飲料並改變它的樣式。你可以透過list元素上的類別名稱來應用它。
<ul id="summer-drinks"> <li class="favorite">汽水</li> <li>啤酒</li> <li>果汁</li></ul>
現在你就可以在css中為它加上樣式
.favorite { color: red; font-weight: bold; }
然後你看你的實作效果會發現這個樣式它沒有作用!你選擇添加樣式的飲料並沒有變成紅色,字體也沒有加粗
仔細觀察css中的程式碼你會發現,有兩個選擇器
ul#summer-drinks li { font-weight: normal; font-size: 12px; color: black;}
兩個不同的CSS選擇器都定義了文字顏色和字體重量。字體大小只有一個聲明,所以很明顯一個會生效。這些不是“衝突”,但瀏覽器確實需要決定這些定義了的內容中需要實現哪一個。這就需要透過遵循一套標準的優先級規則來實現。
這可能會讓一些初學者感到困惑,因為他們尚未完全解決這個問題。他們可能會認為因為.favorite語句“ 在CSS中更進一步 ”,或者因為class =“favorite ”在HTML中“ 更接近實際文本 ”,將是優先的。實際上,CSS中選擇器的順序確實發揮了作用,當優先順序完全相同時,後來定義的內容實際上是先執行的,例如:
.favorite { color: red; } .favorite { color: green; }
執行的結果字體的顏色會變綠
這裡的要點是你希望盡可能具體的理解。即使有上面提到的簡單例子,最終你會明白,僅僅使用一個類名來定位「最喜歡的飲料」並不會削減它,或者即使它確實起作用也不會很安全。可以使用以下方法具體定義:
ul#summer-drinks li.favorite { color: red; font-weight: bold; }
這就是我所說的「具體而言才有意義」。你實際上可能更具體,並使用這樣的東西:
html body div#pagewrap ul#summer-drinks li.favorite { color: red; font-weight: bold; }
但有時程式碼會很長。它會使的CSS程式碼的閱讀性降低,並沒有產生任何實際好處。為“.favorite”類別提取特異性值的另一種方法是使用! important聲明。
.favorite { color: red !important; font-weight: bold !important; }
我曾經聽過! important是CSS的絕地思維技巧。也確實如此,您可以透過使用它來強制您的元素樣式。但是,透過大幅提高特定選擇者使用的特殊性,將會產生一些不必要的問題。如果被錯誤理解,那麼! important聲明很容易被濫用。它最好用於保持CSS整潔,例如,您知道具有特定類別選擇器的元素應該使用某種樣式集。相反,不僅用作快速的使用方法來覆蓋某些東西的樣式,而不是弄清楚原始作者如何構造和使用CSS。
我的一個經典例子是:
.last { margin-right: 0 !important; }
計算CSS選擇器優先權
為什麼我們第一次嘗試更改顏色和字體重量失敗了?正如我們所了解的那樣,這是因為簡單地使用類別名稱本身俱有較低的優先級,並且被另一個選擇器覆蓋,該選擇器使用ID值定位無序列表。該句中的重要字詞是類別和id。 CSS對類別和ID應用了截然不同的優先權權重。事實上,ID具有無限的優先權價值!也就是說,沒有任何類別的優先順序可以超過ID。
我們來看看數字的實際計算方式:
換一種說法:
如果元素具有內聯樣式,則自動1勝(1,0,0,0分)
對於每個ID值,應用0,1,0,0個點
#對於每個類別值(或偽類或屬性選擇器),應用0,0,1,0點
對於每個元素引用,套用0,0,0,1點
您通常可以讀取值,就好像它們只是一個數字,如1,0,0,0是“1000”,因此顯然勝過0,1,0,0或“100”的特異性。逗號是在那裡提醒我們,這不是一個真正的“基礎10”系統,因為你在技術上可以具有類似0,1,1,3,4的優先值- 並且“13”不會溢出基礎10系統會。
樣本計算
not()sort-of-pseudo-class本身不具有任何優先級,只將parens中的內容添加到優先值中。
重要說明
#通用選擇器(*)沒有優先權值(0 ,0,0,0)
偽元素(例如:第一行)獲得0,0,0,1不像他們的偽類兄弟獲得0,0,1,0
#偽類:not()本身不具有任何優先級,只是它的括號內的內容。
附加CSS屬性值的! important值是自動獲勝。它甚至覆蓋了標記中的內聯樣式。可以覆蓋! important值的唯一方法是使用CSS中稍後聲明的另一個! important規則,否則具有相同或更大的特異性值。您可以將其視為將特定值添加1,0,0,0,0。
以上是css優先權怎麼計算?帶你深入了解什麼是CSS優先級的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS保證金屬性,特別是“保證金:40px 100px 120px 80px”,其應用程序以及對網頁佈局的影響。

本文討論了CSS邊境屬性,重點是自定義,最佳實踐和響應能力。主要論點:邊境 - 拉迪烏斯(Border-Radius)對響應式設計最有效。

本文討論了CSS中評論的使用,詳細介紹了單線和多行評論語法。它認為註釋可以增強代碼的可讀性,可維護性和協作,但如果無法正確管理,可能會影響網站性能。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

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

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),