但它影响了页面上的所有链接。
#amp-wp-header a:active,a:visited{color:#ffffff;}a:hover,a:focus{color:#ffffff;}
如果你重新格式化它(并将 # 更改为 . 以指定一个类),你会得到
.amp-wp-header a:active,a:visited{color:#ffffff;}
a:hover,a:focus{color:#ffffff;}
您可以清楚地看到,在第二条规则中,您正在将颜色应用于所有悬停或聚焦的链接。
换句话说,第一个{color:#ffffff} 会终止规则。以下以a:hover 开头的部分被解释为一个全新的、单独的规则。它不受.amp-wp-header 的影响,因为它恰好在同一行。
因此您可能认为解决方案是将您的 CSS 重写为一条规则,以便更高级别的选择器适用于 所有 伪类状态:
.amp-wp-header a:active, a:visited, a:hover, a:focus {color: #ffffff;}
但是,这也不起作用,因为.amp-wp-header 仅适用于a:active。 “选择器组”的每个成员,有时称为“选择器列表”,用逗号分隔的选择器列表,是完全独立的。换句话说,上面完全等价于
.amp-wp-header a:active {color: #ffffff;}
a:visited {color: #ffffff;}
a:hover {color: #ffffff;}
a:focus {color: #ffffff;}
这会将样式应用于所有已访问、悬停或聚焦的链接,而不仅仅是.amp-wp-header 内的链接。因此你需要把它写成
.amp-wp-header a:active {color:#ffffff;}
.amp-wp-header a:visited {color:#ffffff;}
.amp-wp-header a:hover {color:#ffffff;}
.amp-wp-header a:focus {color:#ffffff;}
等价物是
.amp-wp-header a:active,
.amp-wp-header a:visited,
.amp-wp-header a:hover,
.amp-wp-header a:focus {
color: #ffffff;
}
请注意,在未来的浏览器中,您将能够使用:matches,如下所示:
.amp-wp-header a:matches(:active, :visited, :hover, :focus) {
color: #ffffff;
}
有关详细信息,请参阅MDN page。有关兼容性,请参阅this chart。目前,您需要使用带有供应商前缀的版本,例如 -webkit-any 或 -moz-any,这会降低它的吸引力。
除了了解选择器和选择器组的工作方式之外,这里的一个教训是仔细格式化和缩进您的 CSS,以帮助您(和其他人)了解它的含义。