2013-08-27 18 views
1

我有下面的代碼有問題:可能css在鉻中的優先級錯誤?

#access a, #access a:visited { 
line-height: 2em;     //<- Chrome uses these 
padding: 0 1em; 
} 
#access ul ul a { 
line-height: 1em;     //<- Firefox uses these 
padding: .5em .5em .5em 1em; 
} 

HTML代碼:

<nav role="navigation" id="access"> 
[...] 
    <div [...]> 
    <ul [...]> 
     <li [...]> [...] </li> 
     <li [...]> [...] 
     <ul class="sub-menu"> 
      <li [...]> [...] </li> 
     </ul> 
     </li> 
    </ul> 
    </div>  
</nav> 

其中選擇具有更高的優先級?

#access a, #access a:visited 

#access ul ul a <- Is supposed to have the higher priority 

兩個瀏​​覽器(Firefox或Chrome)似乎解釋他們錯了

一個簡單的辦法是給第二選擇一個類名

-> #access ul ul.sub-menu a <- works for both 

如果這可以被認爲是一個錯誤,那麼我會報告給Mozilla/Google

編輯:小提琴(1 Chrome和Firefox中1)的兩張照片: 鉻:

enter image description here

火狐:

enter image description here

+0

我剛剛創建了一個jsFiddle,它在Chrome中顯示'#access ul ul a'具有更高的優先級。如果我在複製問題時犯了錯誤,您能自己創建一個嗎? –

+0

按預期工作對我來說http://jsfiddle.net/C8449/1/這兩個瀏覽器都使用'#access ul ul a' – Turnip

+0

我用原始代碼更新了它:http://jsfiddle.net/C8449/3/並在那裏再次;同樣的錯誤,也許你知道什麼是錯誤的,我可以截圖Firebug和Chrome控制檯 – Djfe

回答

2

「#access一個:拜訪」比「#access ul ul a」具有更高的特異性。如果您運行http://www.w3.org/TR/CSS21/cascade.html#specificity算法,前者的特異性爲(0,1,1,1),而後者爲(0,1,0,3)。

您修改的選擇器(「#access ul ul.sub-menu a」)具有特異性(0,1,1,3)。

Firefox忽略:visited規則中線寬樣式的原因在http://dbaron.org/mozilla/visited-privacy中進行了解釋,尤其是在「它限制可用於設置訪問鏈接樣式的CSS屬性」段落中。