14

所以我们需要对 CSS 锚伪类使用以下顺序

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

但我的问题是为什么要打扰 a:link 部分?相反,上述内容是否有任何优势(除了清晰度之外):

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

4 回答 4

15

: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>

(它们也有不同程度的特异性

于 2010-04-14T14:35:22.503 回答
8

仅“a”指的是所有可能的链接(未访问、已访问、悬停和活动),而“a:link”仅指正常未访问的链接。

如果您使用“a”而不是“a:link”,则将所有链接的默认 CSS 设置为“a”设置的任何值。在这种特定情况下,由于您指定了每个可能的伪类,因此您说“a:link”还是只说“a”基本上都没有关系

因此,在第一组中,您写出所有伪类(a:link、a:visited 等),您为“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

在第二组中,你只写“a”,你实际上是为所有链接设置默认 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
于 2010-04-14T14:39:12.227 回答
1

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

:link 是当链接未被访问时。所以当有一个带有 href 属性的锚并且用户从未在锚后面的页面上时。

于 2010-04-14T14:44:20.240 回答
-1

Selector:link是超链接的伪元素选择器,任何是超链接的元素都会被匹配。选择a器将匹配“仅”锚元素。

通常,每个a元素也是一个超链接,我不知道自己有什么方法可以在不使用锚点的情况下在 HTML 中创建超链接,因此在大多数情况下您可能可以使用其中任何一个。

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

于 2013-11-07T12:17:29.913 回答