The :link
selector is a pseudo-class that targets all anchor (<a>
) elements on a page that have an href
attribute:
a:link {
color: aquamarine;
}
The example above will change the color of all links to aquamarine.
When used in combination with the :hover
pseudo-class, :link
must appear first, or else not be defined at all, in order for the :hover
styles to work. This is because they are equally specific, so if :link
came after, those styles would override the hover styles. Think LOVE and HATE to get the order right.
The :link
pseudo-class will target all <a>
elements that have an href
attribute, even if the href
has an empty value. So, in that sense, it is like the attribute selector [href]
.
Here are some examples to see what will match the :link
pseudo-class:
<!-- will be matched -->
<a href="https://css-tricks.com">CSS-Tricks</a>
<!-- invalid HTML, but will still match -->
<a href>CSS-Tricks</a></code>
<!-- will not be matched -->
<a>CSS-Tricks</a>
There are only three HTML elements that accept the href
attribute: <a>
, <link>
, and <area>
. Only the <a>
element can be styled via the :link
pseudo-class. Also, you cannot add the href
attribute to another type of element and make it style-able via :link
. In other words, if you had the following HTML:
<div href="https://css-tricks.com">CSS-Tricks</div>
The following CSS would have no effect:
div:link {
color: aquamarine;
}
Again, the HTML would fail validation, since href
is not a valid attribute for <div>
.
Due to the fact that :link
can target only <a>
elements, :link
styles can be defined in the CSS without the element type selector, like this:
:link {
color: aquamarine;
}
Also, for all practical purposes when using HTML, the :link
pseudo-class is somewhat irrelevant since the same effect can be achieved by simply targeting all <a>
elements directly:
a {
color: aquamarine;
}
However, if there are any <a>
elements on the page that don’t have the href
attribute set (for example, on legacy pages that used <a name="example">
), the above code would target those elements too, and this may not be the desired result.
It should also be pointed out that, starting with CSS2, other document languages (besides HTML) may define other elements, besides anchors, that can be styled via the :link
pseudo-class.
Browser support
IE | Edge | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
All | All | All | All | All | All |
Android Chrome | Android Firefox | Android Browser | iOS Safari | Opera Mobile |
---|---|---|---|---|
All | All | All | All | 62 |
cool ana good
That was interesting to read ;)