2010-04-14 316 views
13

所以我们要使用下面的命令对CSS锚所需的伪类CSS:一:链接VS只是一个(不含:链接部分)

a:link { color: red }  
a:visited { color: blue } 
a:hover { color: yellow } 
a:active { color: lime } 

但我的问题是,为什么同一个麻烦:链接部分?相反,它有什么优势,以上述(或许比清晰度等)过来:

a { color:red; } /* notice no :link part */ 
a:visited { color: blue; } 
etc.,etc. 

回答

13

:link选择访问过的链接,那就是:与href属性还没有被访问过的浏览器锚(不管是什么定义浏览器供应商已“访问”)。

如果有:link那么它永远不会匹配<h1><a name="foo">A foo to be linked to</a></h1>

(虽然你应该用<h1 id="foo">A foo to be linked to</h1>这些天。)

除此之外,它更清楚它是什么。

a   { color: orange } 
 
a:link { color: blue }  
 
a:visited { color: indigo } 
 
a:hover { color: green } 
 
a:active { color: lime }
<a>my anchor without href</a> 
 
    <br><br> 
 
    <a href="http://somelinkhere.com">my anchor without href</a>

(他们也都有不同程度的specificity

+0

你能解释一下它匹配的部分多一点吗?不知道我明白。 – Rob 2010-04-14 18:30:33

+2

'a'匹配所有主播。 'a:link'匹配未访问链接的锚。 'a:visited'匹配被访问链接的锚。 ''是一个不是任何链接的锚。 – Quentin 2010-04-14 20:38:23

+1

@Quentin:真的吗?我无法在规格中找到它。 – feklee 2013-01-27 16:30:13

8

只是 “一个” 是指所有可能的链接(未访问,参观,盘旋着,和活动),而“一:链接“只是指正常的未访问链接。

如果您使用“a”而不是“a:link”,则将所有链接的默认CSS设置为“a”设置为的任何链接。在这种特殊情况下,由于您指定了每个可能的伪类,因此,无论您说“a:link”还是“a”,基本无关紧要。因此,在第一组中,您写出所有伪类(a :链接,一:访问等),您指定为每个可能的情况下,CSS范围内“一”

a:link { color: red }  //set unvisited links to red 
a:visited { color: blue } //set visited links to blue 
a:hover { color: yellow } //set hovered links to yellow 
a:active { color: lime } //set active links to lime 

在第二组中,你只写“一”时,实际上是在设置默认CSS对于你在第一行写的所有链接,然后重新定义其他伪类的CSS

a { color: red }   //set ALL links to red! 
a:visited { color: blue } //hm, never mind, let's set visited links to blue 
a:hover { color: yellow } //hm, never mind, let's set hovered links to yellow 
a:active { color: lime } //hm, never mind, let's set active links to lime 
+0

':链接'不匹配*仅*未访问的链接,它匹配**所有**链接。 – OdraEncoded 2013-11-07 12:06:21

+0

@OdraEncoded':link''不总是匹配_all_链接,例如。 ':visited'和'a'优先(按顺序)。 ':link'只会匹配* all *链接(某种程度上),如果':visited'和'a'都不匹配。因此更有可能':link'只匹配未访问的链接。 – WynandB 2013-11-08 05:13:35

+1

@Wynand':link' **总是匹配所有链接**。 ':visited'具有更高的优先级,是的,但是如果有':link'和':visited',**两个**都匹配,':visited'选择器效果应用在':link'后面选择器效果。就像在其他多重选择器匹配情况下一样。在CSS中,没有一个选择器不匹配,因为存在另一个选择器。 http://jsfiddle.net/z9X54/1/ – OdraEncoded 2013-11-08 19:24:52

1

http://www.w3schools.com/css/css_pseudo_classes.asp

:链接是链接未访问时。所以当有一个带有href属性的锚点时,用户从来没有在锚点后面的页面上。

+0

这并不回答这个问题。 – Quentin 2010-04-14 22:10:59

+0

@Quentin其实,这个答案是现货。 – WynandB 2013-09-18 04:15:58

+0

@Wynand不,它不是,':link'匹配超过未访问的超链接。 – OdraEncoded 2013-11-07 12:29:08

0

选择器:link是用于超链接的伪元素选择器,任何超链接元素都将被匹配。 a选择器将匹配“唯一”锚点元素。

通常,每a元素也是一个超链接,我不知道自己任何方式,而不使用锚创建HTML中的超链接,所以你可能可以使用其中任何一个在大多数情况下, 。

但是,仅使用a将匹配不是超链接的锚元素。例如,以这种方式编写的锚点元素<a name=sign-up>Sign up form</a>将与超链接伪元素:link选择器不匹配,但会匹配a选择器。