解释问题:
所以如果你有一个看起来像这样的 CSS 规则:
h1, h1 a:hover {
color: blue;
}
它工作得很好,从可用性的角度来看,这个例子可能是最好的,但它确实有效。(它可以证明这个问题......)
但是,如果您添加浏览器不理解的逗号 ( , ) 分隔符,则会忽略空洞规则。
h1, h1 a:hover, h1:focus-within {
color: blue;
}
不理解:focus-within 伪类的浏览器将忽略整个规则。这意味着即使是 h1 也不会得到指定的规则。
进一步想知道为什么会这样:
不要误会我的意思。忽略他们不知道的东西是 CSS 中一个非常强大的功能!
但是为什么不设计成只忽略未知部分而所有其他选择器仍然按预期工作?
就我个人而言,我很少偶然发现这个问题,并且我已经接受了选择器中的一个错误事情破坏了整个规则的事实。但是很难解释为什么一个错误的声明或属性只会导致特定的行被忽略,而选择器中的任何未知都会破坏整个块。
感觉好像我错过了一些东西,所以如果有一个很好的解释,请告诉我并感谢您这样做。
不满意的解决方案:
当然,解决方法是将选择器的“危险”部分分成新规则,如下所示:
h1, h1 a:hover {
color: blue;
}
h1:focus-within {
color: blue;
}
但这感觉很糟糕。(由于“不必要的”重复)
只是想把它放在这里。