【问题标题】:CSS class prioritiesCSS 类优先级
【发布时间】:2010-11-10 08:21:35
【问题描述】:

今天遇到一个问题,想问一下CSS类的优先级问题。情况如下:

我有一个无序列表,它有一个与之关联的类。 LI 标签也定义了一些样式。我想在单击后更改LIs 的样式(通过添加的"selected" 类),但从未应用添加的类的样式。这是正常行为还是该代码应该工作?

CSS:

.dynamicList
{
    list-style: none;
}

.dynamicList li
{
    display: block;
    width: 400px;
    height: 55px;
    padding: 10px 10px 10px 10px;
    border: 1px solid #000;
    background-color: #ff0000;
}

.selectedItem
{
    background-color: #0000ff;
}

HTML:

<ul class="dynamicList">
  <li>First Item</li>
  <li class="selectedItem">Second (Selected) Item</li>
</ul>

"selected" 列表项的背景颜色没有改变。如果我不将样式应用到 LI 元素,但创建另一个类并将其应用到所有列表项以使其读取时,也会出现这种情况。

<li class="listitem selectedItem">xxxx</li>

【问题讨论】:

    标签: css list class css-specificity


    【解决方案1】:

    这听起来像是CSS specificity 问题。尝试将您的 .selectedItem 规则集更改为:

    .dynamicList li.selectedItem {
      background-color: #0000ff;
    }
    

    【讨论】:

    • 啊当然,真是个白痴!非常感谢所有非常快速的答案!干杯斯图尔特
    【解决方案2】:

    简短的回答是您的 .selectedItem 样式没有被应用,因为以前的样式更具体,因此具有更高的优先级。这是decent rundown

    现在,让我们列出 CSS 的内部优先级(3 具有 最高优先级):

    element
    .class
    #id
    

    这是默认的优先顺序。在 除此之外,特异性将 也算,f.ex ul li 将覆盖 李。 W3C 已经做了一个像样的表 你应该如何计算内部 重量:

    LI            {...}  /* a=0 b=0 c=1 -> specificity =   1 */
    UL LI         {...}  /* a=0 b=0 c=2 -> specificity =   2 */
    UL OL LI      {...}  /* a=0 b=0 c=3 -> specificity =   3 */
    LI.red        {...}  /* a=0 b=1 c=1 -> specificity =  11 */
    UL OL LI.red  {...}  /* a=0 b=1 c=3 -> specificity =  13 */
    #list         {...}  /* a=1 b=0 c=0 -> specificity = 100 */
    

    这里是W3C specification

    【讨论】:

      【解决方案3】:

      selectedItem 规则更改为:

      .dynamicList li.selectedItem
      {
          background-color: #0000ff;
      }
      

      【讨论】:

        【解决方案4】:

        cletus 的帖子中没有提到的一个小补充。
        根据W3C链接,最高优先级是html元素/标签中使用的style属性。

        例如如果你有

        <a id= bar style="color: red">foo</a>
        

        <style>
        #bar {
            color: blue;
        }
        </style>
        

        颜色将为red,因为内联html样式的优先级最高,高于#

        【讨论】:

        • 我今天得知 W3C 被认为是错误的代码信息来源:w3fools.com
        • W3C 资源不错,W3Schools 是
        • 我感觉自己像个小学生,所以我喜欢 W3School,它通过示例为您提供了很多关于不同主题的信息。W3C 是官方标准和国际社区,因此它的定义必须是好的,嗯..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-25
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多