我已经使用HTML很长一段时间了,从来没有真正做过这样的事情。我在段落标记中有锚标记,如下所示:
<p>Hello <a href="path/page.html">World</a></p>
我想知道是否有一种方法可以改变p
元素的样式,如果a
已被访问过,只使用CSS。我知道 JavaScript 可以做到这一点,如果您愿意参考,可以随意发布一个 Vanilla JS 答案,但我的问题是关于如何使用它来做到这一点CSS。
因为我预测有人会说像这样的内容吗?“父标记真的有必要吗?”,我知道 HTML5 和 CSS3 带来全新的在不需要额外标签的情况下对内容进行样式和操作的方法,但这不是问题的关键。关键是如果需要(在我的情况下,我做),该怎么做。
答案 0 :(得分:2)
这里有几个问题。
最初我建议使用::before
选择器来尝试实现某些功能,但经过一番挖掘后,我遇到了this article (and this answer from SO),这可能会引起感兴趣的阅读。
See this JSFiddle( 已更新 到本机JS )。值得注意的是,我确实尝试过上面回答中提到的本机JavaScript检查,以及在jQuery中使用:visited
选择器,但都没有用。
<强> JS 强>
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i ++) {
var anchor = anchors[i];
console.log(document.defaultView.getComputedStyle(anchor, null).getPropertyValue('color'));
}
<强> HTML 强>
<p>
<a href="http://google.com">Google</a>
</p>
<p>
<a href="http://nowayjose.com">Never visited</a>
</p>
<强> CSS 强>
a { color: #00FF00; }
a:visited { color: #FF0000; }
CSS4中的!
选择器如何与:visited
规则一起发挥作用的潜在安全隐患非常有趣,因为您可以设置不同的元素,然后可能会查询该元素的样式。