css样式表中的样式覆盖顺序(转)
有時(shí)候在寫CSS的過程中,某些限制總是不起作用,這就涉及了CSS樣式覆蓋的問題,如下
?
?
Css代碼???
查找一些教材中(w3schools等),只說css的順序是“元素上的style” > “文件頭上的style元素” >“外部樣式文件”,但對于樣式文件中的多個(gè)相同樣式的優(yōu)先級怎樣排列,沒有詳細(xì)說明。經(jīng)過測試和繼續(xù)搜索,得知優(yōu)先級如下排列:
?
1. 樣式表的元素選擇器選擇越精確,則其中的樣式優(yōu)先級越高:
id選擇器指定的樣式 > 類選擇器指定的樣式 > 元素類型選擇器指定的樣式
所以上例中,#navigator的樣式優(yōu)先級大于.current_block的優(yōu)先級,及時(shí).current_block是最新添加的,也不起作用。
?
2. 對于相同類型選擇器制定的樣式,在樣式表文件中,越靠后的優(yōu)先級越高
注意,這里是樣式表文件中越靠后的優(yōu)先級越高,而不是在元素class出現(xiàn)的順序。比如.class2 在樣式表中出現(xiàn)在.class1之后:
?
Css代碼???
而某個(gè)元素指定class時(shí)采用 class="class2 class1"這種方式指定,此時(shí)雖然class1在元素中指定時(shí)排在class2的后面,但因?yàn)樵跇邮奖砦募衏lass1處于class2前面,此時(shí)仍然是class2的優(yōu)先級更高,color的屬性為red,而非black。
?
3. 如果要讓某個(gè)樣式的優(yōu)先級變高,可以使用!important來指定:
?
Css代碼???此時(shí)class將使用black,而非red。
?
對于一開始遇到的問題,有兩種解決方案:
1. 將border從#navigator中拿出來,放到一個(gè)class .block中,而.block放到.current_block之前:
?
?
Css代碼???需要莫仁為#navigator元素指定class="block"
?
2. 使用!important:
?
?
Css代碼???此時(shí)無需作任何其他改動(dòng)即可生效。可見第二種方案更簡單一些。?
轉(zhuǎn)自:http://spartan1.iteye.com/blog/1526735
總結(jié)
以上是生活随笔為你收集整理的css样式表中的样式覆盖顺序(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Widget开发中遇到的坑
- 下一篇: emoji表情过滤处理