styling visited links belonging to a class

2019-09-09 23:18发布

I cannot find a way to style a:visited but only those belonging to .extern.

a:visited.extern doesn't work and neither does a.extern:visited (I' using Mozilla Firefox 43.0.1 for Linux x86_64)

The reason is I have a small icon I'd like to add to .extern links, and I want to change its url() when the link is visited.

<style>
    a.extern {
        padding-right:1.3em;
        background-repeat: no-repeat;
        background-attachment: scroll;
        background-position: right center;
        background-clip: border-box;
        background-origin: padding-box;
        background-size: 0.7em 0.7em;
        background-image: url("img/link.png");
    }

    a:visited:extern {
        background-image:url("img/link-visited.png");
    }

    a.extern:visited {
        background-image:url("img/link-visited.png");
    }
</style>

In the end all visited links of this type should be affected

<a class="extern" href="http://etc.etc.etc">link</a>

3条回答
Luminary・发光体
2楼-- · 2019-09-09 23:26

Basically what you want to do is restricted by browsers, particularly Firefox.

Per MDN - Privacy and the :visited selector

You will still be able to visually style visited links, but there are now limits on what styles you can use. Only the following properties can be applied to visited links:

  • color
  • background-color
  • border-color (and its sub-properties)
  • outline-color
  • The color parts of the fill and stroke properties
查看更多
等我变得足够好
3楼-- · 2019-09-09 23:29

First, I assume the name of your class is extern, and not .extern, so your a tag will look something like this.

<a class="extern" href="http://etc.etc.etc">link</a>

To style only the visited links which have the extern class you should use:

a.extern:visited {
    background-image:url("img/link-visited.png");
}

Notice how the :visited selector is added at the end: a.extern:visited.

查看更多
劳资没心,怎么记你
4楼-- · 2019-09-09 23:29

Change

<a class=".extern" href="http://etc.etc.etc">link</a>

to

<a class="extern" href="http://etc.etc.etc">link</a>

and

<style>
    a.extern {
        padding-right:1.3em;
        background-repeat: no-repeat;
        background-attachment: scroll;
        background-position: right center;
        background-clip: border-box;
        background-origin: padding-box;
        background-size: 0.7em 0.7em;
        background-image: url("img/link.png");
    }

    a:visited:extern {
        background-image:url("img/link-visited.png");
    }

    a.extern:visited {
        background-image:url("img/link-visited.png");
    }
</style>

block with code below do not needed

a:visited:extern {
    background-image:url("img/link-visited.png");
}
查看更多
登录 后发表回答