css 此代码部分“*,::before,::after { boxsizing:border-box }”的工作?

stszievb  于 2023-03-14  发布在  其他
关注(0)|答案(2)|浏览(141)

我正在阅读《CSS in Depth》一书的第3章,现在我遇到了一个问题,那就是这里的CSS代码:

*,
::before,
::after {
  box-sizing: border-box;
}

在我读过的一本书中,它说这些选择器将针对页面上的所有元素和每个伪元素。
然后我发现在“::before”和“::after”之前没有选择器,而在MDN Web Doc(https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements)中有这样的描述:
只能在选择器中使用伪元素。它必须出现在语句中的简单选择器之后。
所以我很困惑,上面的代码是对的吗?还是应该是这样的代码:

*,
*::before,
*::after {
  box-sizing: border-box;
}

完整的代码列表为here

von4xj4u

von4xj4u1#

根据质量标准:
如果由 * 表示的通用选择符(即没有名称空间前缀)不是简单选择符selectors序列的唯一组件,或者后面紧跟伪元素,则可以省略*并暗示通用选择符的存在。**

7nbnzgx9

7nbnzgx92#

嗯,两个都对。
MDM中的描述还包含一个您已删除的词:
在选择器中只能使用***一个***伪元素。它必须出现在语句中的简单选择器之后。
这意味着你不能在一个css选择中使用两个伪选择器.当我们添加part时,,它必须出现在简单选择器之后''意味着你不能像这样链接它们:

selector::pseudo-element::pseudo-element {
}

但总的来说,::after*::after具有相同的含义。

相关问题