CSS中颜色可以覆盖,但文本装饰不能。

3

我正在尝试在CSS中为锚标签编写伪代码,即链接(link),访问过的(visited),悬停(hover)和激活(active)。HTML代码如下:

    <a href="https://www.w3schools.com/html/" target="_blank">
        w3school
    </a>

而CSS代码如下:

    a:link {
        color: blue;
        text-decoration: overline underline;
    }

    a:visited {
        color: green;
        text-decoration: line-through;
    }

    a:hover {
        color: red;
        text-decoration: underline;
    }

    a:active {
        color: black;
        text-decoration: overline;
    }

访问后,文本颜色变为绿色是正确的。然而,文本装饰是上划线和下划线,而不是穿过线::visited is partially working。看起来颜色被级联了,而文本装饰没有。有人能解释一下吗?


1
相关链接:https://stackoverflow.com/q/57839759/8620333 - Temani Afif
1个回答

3
现今,浏览器会限制您对:visited状态应用的样式-因为通过JavaScript检查布局的某些更改,可以确定您是否已经访问过外部URL。以下是https://developer.mozilla.org/en-US/docs/Web/CSS/:visited#Styling_restrictions提到的一些样式限制:由于隐私原因,浏览器严格限制了可使用此伪类的CSS属性以及如何使用它们:允许使用的CSS属性包括color、background-color、border-color、border-bottom-color、border-left-color、border-right-color、border-top-color、column-rule-color和outline-color。https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector提到了在2010年前,CSS :visited选择器允许网站揭示用户的浏览历史,并找出用户访问过哪些站点的情况。这是通过window.getComputedStyle和其他技术完成的。这个过程执行起来很快,不仅可以确定用户在web上去了哪里,还可以用于猜测有关用户身份的大量信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接