代码之家  ›  专栏  ›  技术社区  ›  citronas

CSS样式的应用顺序是什么?

  •  18
  • citronas  · 技术社区  · 14 年前

    我有以下HTML。

    <ul>
      <li>
        <a>asdas</a>
      </li>
    </ul>
    

    在我的CSS样式表中,我对a标记进行了常规设置,之后对ul li a进行了几行设置。 这样地:

    a:link
    {
     color: red;
    }
    ...
    ul li a
    {
     color:blue;
    }
    

    Firebug告诉我,首先加载颜色:蓝色,然后覆盖颜色:红色。
    到目前为止,我一直认为,加载CSS文件的顺序和单个CSS文件中的样式顺序告诉浏览器应该如何格式化HTML元素。不幸的是,我现在正经历着,反之亦然。

    那么告诉我,我应该如何纠正我的风格,以实现李内的A标签被渲染为蓝色而不是红色?

    3 回复  |  直到 10 年前
        1
  •  23
  •   T.J. Crowder    10 年前

    根据最常用的样式应用样式 具体的 对元素,然后按文本顺序对具有相同特异性的规则进行排序。这里更多 in the spec . 因为 a:link 是更多 具体的 ul li a 无论位置如何,这种风格都会获胜。

    那么告诉我,我应该如何纠正我的风格,以实现李内的A标签被渲染为蓝色而不是红色?

    使蓝色规则至少和红色规则一样具体。在这种情况下,您可以通过添加 :link 对它:

    ul li a:link
    {
      color:blue;
    }
    
        2
  •  10
  •   Douglas    14 年前

    下面是一篇关于CSS选择器特殊性的文章,看起来不错: http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

    中的部分 如何测量特异性? 给你答案:

    a:link   => one tag (a) + one pseudo-class (:link) = 1 + 10    = 11 points
    ul li a: => three tags (ul, li, a)                 = 1 + 1 + 1 =  3 points
    

    所以A:链接样式获胜。

    提示:只有当两个CSS选择器具有相同的特性时,顺序(在CSS文件中)才重要。

        3
  •  0
  •   ant    14 年前

    我会用 color:blue !important;