2010-05-13 57 views
15

我有以下的HTML。应用CSS样式的顺序是?

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

在我的CSS样式表我对标签常规设置,和几个hundered线后设置UL李一。 像这样:

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

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

所以告诉我,我该如何纠正我的风格才能实现里面的一个标签,使其呈现蓝色而不是红色?

+0

可能的重复[外部文件中两种冲突CSS样式的规范行为是什么?浏览器对此支持如何?](http://stackoverflow.com/questions/2819410/what-is-the-spec-behavior-for-two-conflicting-css-styles-from-an-external-file) – Quentin 2010-05-13 11:36:09

回答

21

根据哪种样式最适用的样式是特定到元素,然后按照文本顺序为具有相同特性的规则应用样式。更多这里in the spec。因为a:link更多特定ul li a,这种风格赢得不管位置。

所以告诉我,我该如何纠正我的风格才能实现里面的一个标记,使其呈现蓝色而不是红色?

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

ul li a:link 
{ 
    color:blue; 
} 
+4

实际的原因是'a:link'比'ul li a'更具体。 – Quentin 2010-05-13 11:39:46

+0

@大卫:挺好!是的,我有点失望,不是吗?固定。 – 2010-05-13 11:42:26

+0

这个答案实际上并没有回答 这个问题:“我怎样才能纠正我的风格,以实现li内部的标签呈现蓝色而不是红色?” – 2014-05-08 10:33:31

0

我会使用color:blue !important;

+8

这有两个问题。首先,你的语法错了(重要的单词之前有一声巨响)。其次,这是大锤的做法,并没有回来。如果你有第三种风格想加入到级联中,那么!重要的是它也会打倒它。 – Quentin 2010-05-13 11:38:10

+0

@David Dorward谢谢,我纠正了它。我只是回答他的问题:“所以告诉我,我应该如何纠正我的风格,才能让李的内部标签呈现蓝色而不是红色?”我不是,他没有说任何关于第三种风格的东西。现在:D它非常丑陋我同意但它回答他的问题 – ant 2010-05-13 11:45:23

+0

可以downvoter告诉我为什么downvote,我修正了语法错误,还有什么我必须修复/解释/否 – ant 2010-05-13 11:47:02

9

下面是关于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:link风格赢了。

提示:仅当两个css选择器具有相同的特征时,顺序(在CSS文件中)才有意义。