可能是铬中的css优先级错误?

时间:2013-08-27 12:11:19

标签: css google-chrome firefox

我遇到以下代码的问题:

#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

编辑:两张Fiddle图片(Chrome中1张,Firefox中1张): 铬:

enter image description here

火狐:

enter image description here

1 个答案:

答案 0 :(得分:2)

<#>“#access a:visited”具有比“#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属性”段落中。< / p>