结合a:访问a:after,或用伪元素链接伪类

Laz*_*rks 17 html css css-selectors css3

假设我想在链接访问后在链接旁边添加一个形状(如复选标记),而不是让它变成紫色,使用:after和a:visited.

我不确定我是否应该选择这样的形状:

a:visited:after {
Run Code Online (Sandbox Code Playgroud)

或者像这样:

a:visited a:after
Run Code Online (Sandbox Code Playgroud)

要么

a:visited :after {
Run Code Online (Sandbox Code Playgroud)

(当我应该或不应该在伪元素之前添加空格时,我也有点模糊,或者甚至是否重要?)

或许是不同的东西?

现在我的CSS看起来像这样:

a:visited:after {
    /* check mark shape */
    content:'\00a0';
    color: black;
    position: relative;
    left:15px;
    display:inline-block;
    width: 3px;
    height: 6px;
    border: solid black;
    border-width: 0 2px 2px 0;  
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
}
Run Code Online (Sandbox Code Playgroud)

复选标记形状代码来自 http://webitect.net/design/webdesign/creating-fancy-bullet-points-with-pure-css3/

谢谢你的帮助.

Bol*_*ock 26

你应该a:visited:after像你现在一样使用它.它不起作用不是因为代码中的错误,而是因为问题出在:visited伪类中 - 由于隐私问题,它不允许使用伪元素.

基本上,您将无法仅将选中标记图标应用于访问过的链接.

关于这个:

(当我应该或不应该在伪元素之前添加空格时,我也有点模糊,或者甚至是否重要?)

这很重要,因为空间代表了一个后代组合子:

  1. 选择器a:visited a:after表示一个:after伪元素,a它是另一个的后代,a它是一个访问过的链接,在HTML中没有多大意义.

  2. 选择a:visited :after类似a:visited a:after,但它代表:after任何形式的后裔a:visited.

    它可以改写为a:visited *:after.请参阅规范中的通用选择器.

通过省略空格,您将伪元素直接应用于选择器所代表的元素,在您的情况下a:visited,它不是任何后代.

  • @Jared Farrish:*选择器*是一般(和广义)术语;*组合子*是指表示两个化合物选择剂之间关系的符号; 例如`#parent> .child`.我有另一个答案[这里](http://stackoverflow.com/questions/9848556/correct-terms-and-words-for-sections-and-parts-of-selectors/9849403#9849403),其中包含完整的定义词汇表虽然我不确定是否应将其移至wiki或其他内容,因为问题并未预期整个词汇表. (4认同)
  • 当我意识到OP在他原来的问题中使用`:after`时,W3C是否建议对伪元素使用双冒号语法:`:: after`? (2认同)
  • @David Thomas:如果你想保持与IE <9的兼容性,你仍然可以使用CSS1和CSS2伪元素的单冒号语法.如果你不需要支持旧的浏览器,是的,你应该开始使用双冒号伪元素.任何新的伪元素都不允许使用单冒号. (2认同)