css選擇器的特殊性值
阿新 • • 發佈:2018-06-16
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選擇器的特殊性值