为什么我们需要"a:link"?为什么不只是"一个"?

usr*_*usr 24 html css

似乎以下变体产生相同的结果:

/* 1 */
a, a:visited, a:active { color: black; }
a:hover { color: red; }

/* 2 */
a, a:link, a:visited, a:active { color: black; }
a:hover { color: red; }

/* 3 */
a:link, a:visited, a:active { color: black; }
a:hover { color: red; }
Run Code Online (Sandbox Code Playgroud)

网络上的大多数指导使用2或3.为什么不选择最简单的1?:link如果您只需要一种普通链接样式和一种悬停样式,我就找不到合适的理由.

不使用是最佳做法:link吗?为什么或者为什么不?

我不关心链接是否被访问过.两者都采用相同的风格.我只关心悬停或不悬停.这个问题不是关于变体的作用 - 都做同样的事情.它是关于什么是最好的变种.其中一个变种有缺陷吗?哪一个是最佳实践?

hob*_*bbs 68

因为并非每一个a都是一个链接.

<a name="table_of_contents">Table of Contents</a>
Run Code Online (Sandbox Code Playgroud)

不是链接,它是一个可以链接的锚<a href="#table_of_contents">.

a会匹配它,a:link不会.


Eve*_*een 21

它用于区分具有href属性的简单锚点和锚点.在这里查看demo jsfiddle.

<style>
a { color: red; }
a:link { color: blue; }
</style>
<a name="anchor">No href</a><br />
<a href="http://stackoverflow.com/">With href</a>
Run Code Online (Sandbox Code Playgroud)

编辑:因此,重要的是涵盖CSS中的所有情况.选项2是完全涵盖所有案例的唯一选择.如果没有没有href属性的锚元素,那么使用选项1是安全的.

  • @usr老实说你做到了.你的头衔 2.为什么不选择最简单的1?3.我找不到一个很好的理由申请:链接... 4."这个问题与变体的作用无关 - 所有人都做同样的事情." 这个答案表明他们不会做同样的事情所以是的,这是一个很好的一点,为什么你可能想要使用:链接,只是因为你不关心这种情况并不意味着他的答案是错的,因为你的问题从来没有说你不关心这个. (8认同)
  • @usr问*为什么我们需要"a:link"?为什么不只是"一个"?**,答案是因为他们做了不同的事情.这个答案指出了这一点,就像其他很多答案一样.如果这个人认为其中任何一个是正确的,我将会感到震惊.他在此之前我会删除这个答案.我知道他的类型;) (5认同)