1. 程式人生 > >css選擇器的特殊性值

css選擇器的特殊性值

pre 重要性 欄目 頁面設置 html 類名 添加 沒有 bubuko

今天從前端那拿來寫好的頁面,就開始動工,首先,照舊處理導航欄高亮的問題,

說到處理高亮的問題,不同的人會有不同的方法,比如:

//類名為nav的元素下的第n個a元素
.nav a:nth-of-type(n){
color:#ff0000;
}

或者,為每個導航欄目設置不同的類名,然後在對應頁面,為該導航欄設置高亮;

再或者,導航欄類名都一樣的話,用js在每個頁面為當前導航欄設置高亮樣式或者添加高亮類名(樣式提前設定);

總之,方法是多種多樣的。

就我今天拿到的頁面來說,前4個a標簽我用了a:nth-of-type(n)進行了處理,由於這位同學對導航欄處理的問題,第5個

欄目不適合這種方法,於是我就直接為其設置一個單獨的類名,並在該欄目頁面設置高亮,但是卻不奏效。

第一時間按下F12,審查元素:

技術分享圖片

(咳咳,這個文件名用中文大家就別吐槽了)

上面是全局樣式,當然是會放在html文件頭部最前面的,後面的樣式是我寫在欄目當前頁的,可以看到,我寫的高亮樣

式居然沒有奏效,被覆蓋了,沒有道理啊,應該是高亮樣式覆蓋之前的樣式啊,後來者居上嘛,於是我就這麽對它望著,

1min之後,靈光一閃,選擇器權重啊,於是換了種選擇器寫法(增加權重),於是問題圓滿解決。

其實這得歸功於我在很久之前通讀過《css權威指南》這本書,我記得裏面提到過特殊性值(上文所說的權重)的概念。

這一概念完美解答了“當為一個元素,設置了多種樣式時,哪一種會奏效”的問題。

其實說到這個問題,大多數人都會回答說外部樣式、嵌入樣式、內聯樣式,以及三者的優先級問題。很少會有人提到特殊

性值,所以這裏就體現了書本的重要性。

下面貼上《css權威指南》第三版的關於這部分的描述(每個版本的面熟可能不盡相同,但是說的都是一個東西)

技術分享圖片

我當時看的應該是第四版。

所以現在你知道了,並不是誰越靠近元素就會使用該樣式,最終還是由選擇器的特殊性值來決定到底用哪一個樣式。

css選擇器的特殊性值