CSS:link和:visted伪类-web浏览器是否遵守规范?

CSS:link和:visted伪类-web浏览器是否遵守规范?,css,hyperlink,css-selectors,visited,Css,Hyperlink,Css Selectors,Visited,缔约国声明如下(强调我国): :link伪类适用于尚未访问的链接 :visted伪类在用户访问链接后应用 这两种状态相互排斥 这意味着应用于:link选择器的任何样式都应仅应用于未访问的链接。但是,唯一正确的属性似乎是color。将字体大小、背景等应用于:link选择器将针对所有链接 下一页有一条说明: 注意。样式表作者可能滥用:link和:visted伪类来确定用户未经用户同意访问了哪些站点 因此,UAs可以将所有链接视为未访问的链接,或者实施其他措施来保护用户的隐私,同时以不同方式呈现已

缔约国声明如下(强调我国):

  • :link伪类适用于尚未访问的链接
  • :visted伪类在用户访问链接后应用
这两种状态相互排斥

这意味着应用于
:link
选择器的任何样式都应仅应用于未访问的链接。但是,唯一正确的属性似乎是
color
。将字体大小、背景等应用于
:link
选择器将针对所有链接

下一页有一条说明:

注意。样式表作者可能滥用:link和:visted伪类来确定用户未经用户同意访问了哪些站点

因此,UAs可以将所有链接视为未访问的链接,或者实施其他措施来保护用户的隐私,同时以不同方式呈现已访问和未访问的链接

然而,据我所知,这只适用于Javascript返回的样式,而不适用于样式本身的显示


显示问题。浏览器是否偏离了规范,或者我遗漏了什么?

从规范中我了解到,浏览器将
:link
视为
a
,以避免滥用访问状态。因此,无论是否使用javascript,实际应用于所有链接的样式都是
:link
,而
:visted
仅在访问时重载样式

“因此,UAs可能会将所有链接视为未访问的链接,或实施其他措施以保护用户的隐私,同时以不同方式呈现已访问和未访问的链接。”

不适用于仅由JavaScript返回的样式-它与听起来完全一样。这意味着浏览器可能会完全忽略
:visted
上的某些属性(在本例中就是这样)。由于
字体大小
会增加包含元素的大小,因此允许
:访问的
链接的属性不同会破坏浏览器实施的其他安全措施

如果浏览器愿意,可以选择在不应用
:visted
样式的情况下重新计算尺寸。当然,这比仅仅禁止某些属性要复杂得多,性能要差得多。很明显,这一决定是基于这样一个事实做出的,即没有必要使用不同的字体大小、背景等来区分访问过的链接和未访问过的链接,通常,大多数开发人员只会坚持稍微修改颜色


因此,不,它们没有偏离规范,它们利用了允许的异常。

但是
color
属性没有被
:link
类覆盖,而其他样式是。请看这里:+1,这可能是我一整天看到的第一个得体的问题。答案很好,我没有想到更改某些样式会影响页面上的其他非链接元素。顺便说一句,似乎大多数浏览器都会应用颜色和背景色,而不会应用其他颜色。然而,Opera仍然将所有样式应用于已访问的链接。@不满意的OAT:有一篇不错的文章解释了这些问题,并建议只允许一些select属性。允许的属性可能因浏览器而异。