使用元素的伪元素的复杂行为

问题描述 投票:1回答:3

我有这样的代码:

a:link {
  background-color: pink;
  color: yellow;
}
<a href="#">link</a>
<br>
<a href="">link</a>
<br>
<a>link</a>

:link伪类适用于尚未访问的链接。因此,我认为访问后链接中的background-colorcolor属性被取消了。

https://drafts.csswg.org/selectors-3/#link:link伪类适用于尚未访问的链接。

但是实际上,background-color属性仍然存在。另外,字母的颜色是否恢复为原始的蓝色而不是紫色?

这是已报告的已知错误吗?还是规范中还有其他因素?这在大多数现代浏览器中都是可重现的,但是在任何浏览器中均未发现可证明其为错误的错误凭单。

enter image description here


[我还发现访问的背景正在干扰链接,但这不是很直观,但这是规范吗?

a:link {
  color: yellow;
}

a:visited {
  background: black;
  color: red;
}
<a href="#">link</a>
<br>
<a href="">link</a>-why background not work?
<br>
<a>link</a>

enter image description here


更新

我收到了有关隐私限制的评论。但是,就MDN文章而言,它主要是对background-image属性的约束,并且background-color属性不应受到影响,因此这不应与隐私约束有关。

https://developer.mozilla.org/en-US/docs/Web/CSS/:visited#Styling_restrictions

出于隐私原因,浏览器严格限制了您可以使用此伪类应用哪些样式,以及如何使用它们:

  • 允许的CSS属性是颜色,背景颜色,边框颜色,边框底部颜色,边框左侧颜色,边框右侧颜色,边框顶部颜色,列规则颜色和轮廓颜色。

我不认为如果没有默认样式表,则应应用不应应用的伪类样式。

css css-selectors
3个回答
0
投票

[:visited由于:visited而具有CSS样式上的限制,因此您可以对其应用样式。

但是],具有讽刺意味的是,如果将privacy reasons应用于元素itself,则可以通过background伪选择器覆盖样式。与:visited相同:

:link
a {
  background: blue; /* Required */
}

a:link {
  background: red;
  color: yellow;
}

a:visited {
  background: black;
  color: red;
}

0
投票

您必须提供默认状态<a href="#">link</a> <br> <a href="">link</a> <br> <a>link</a>


0
投票

但是实际上,背景颜色属性仍然存在。

© www.soinside.com 2019 - 2024. All rights reserved.