错误?嵌套的 CSS 供应商前缀会破坏 Chrome CSS 解析

Bug? Nested CSS vendor prefix breaks Chrome CSS parsing

提问人:user3163495 提问时间:11/18/2023 最后编辑:user3163495 更新时间:11/18/2023 访问量:67

问:

CSS 嵌套是一个相对较新的功能,现在所有主流浏览器都原生支持它。有关 CSS 嵌套的更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_nesting/Using_CSS_nesting

在以下示例中,“此按钮应为红色”按钮应为红色。它在 FireFox 中是红色的,但在 Chrome 中不是。我的Chrome版本是。119.0.6045.106 (Official Build) (64-bit)

只有当我删除该规则时,Chrome 才会将其正确显示为红色。&::-moz-focus-inner { ... }

这是 Chrome 中的错误吗?

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>CSS Nesting Test</title>
    <style>
        button {
            &::-moz-focus-inner {
                border-width: 0;
            }

            &:not(:disabled) {
                background-color: red;
            }
        }
    </style>
</head>
<body style="margin:0;padding:50px;">
<button>This Button Should Be Red</button>
</body>
</html>

css google-chrome vendor-prefix

评论

3赞 STerliakov 11/18/2023
“如果嵌套的CSS规则无效,那么所有封闭的样式都将被忽略。这不会影响父规则或前面的规则。 未列为有效的伪元素,因此 Chrome 将其视为无效的选择器。如果您只需要一个供应商的规则,只需将它们放在最后即可。如果需要多个供应商,除了在单独的父规则中定义每个供应商(每个供应商一个组)之外,我看不到任何明显的解决方法。-moz-focus-inner
0赞 user3163495 11/18/2023
@STerliakov太棒了,那就解决了。将您的评论作为答案,我会接受它
1赞 Alohci 11/18/2023
是的,这是一个Chrome错误。在 Chrome 中,按钮背景应为红色。

答:

2赞 STerliakov 11/18/2023 #1

根据嵌套规范

如果嵌套的 CSS 规则无效,则将忽略所有包含的样式。这不会影响父规则或前面的规则。

::-moz-focus-inner未列为有效的伪元素,因此 Chrome 将其视为无效选择器。

如果您只需要一个供应商的规则,则可以将它们放在最后。如果需要多个供应商,除了在单独的父规则中定义每个供应商(每个供应商一个组)之外,我看不到任何明显的解决方法。

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>CSS Nesting Test</title>
    <style>
        button {
            &:not(:disabled) {
                background-color: red;
            }

            &::-moz-focus-inner {
                border-width: 0;
            }
        }
    </style>
</head>
<body style="margin:0;padding:50px;">
<button>This Button Should Be Red</button>
</body>
</html>

评论

2赞 Alohci 11/18/2023
嗯,您提供的第一个链接中的示例清楚地表明,遵循具有无效选择器的规则的规则应该“工作正常”,并且前面的散文说“包含此选择器的规则被忽略,但后续有效规则不会”。此外,在Firefox中的同一位置放置无效规则并不能阻止按钮背景变为红色。所以我认为;是 Chrome 错误。
0赞 STerliakov 11/18/2023
@Alohci嗯,我没有给予足够的重视。看起来以下选择器不应该失效。Chrome开发人员可能以与我最初相同的方式阅读这一段......