【问题标题】:Is there a functional difference between > *:first-child and > :first-child?> *:first-child 和 > :first-child 之间是否存在功能差异?
【发布时间】:2020-06-15 00:28:57
【问题描述】:

在编写一段代码时,我注意到在一个地方我写了> :first-child,后来又写了> *:first-child。两个块似乎都可以正常工作,但两者之间有区别吗?

【问题讨论】:

  • 不,没有。
  • 如果有区别,我相信是irrelevant
  • 因此,就性能而言,它们是相同的。我想这一切都归结为偏好问题?

标签: css css-selectors


【解决方案1】:

即使我们考虑性能,它们也是相同的。从the specification我们可以阅读

如果由 * 表示的通用选择器(即没有命名空间前缀)不是简单选择器选择器序列的唯一组成部分或紧随其后的是伪元素,则 * 可以省略 和通用选择器的存在隐含

所以写> :first-child应该和浏览器的> *:first-child意思一样。

你也可以阅读

注意:建议不要省略 *,因为这样可以减少 div :first-childdiv:first-child 之间的潜在混淆。在这里,div *:first-child 更具可读性。

因此,这不仅是偏好问题,而且有助于避免混淆并使代码更具可读性。


the new sepcification我们也可以阅读:

除非元素是无特征的,否则通用选择器的存在对元素是否匹配选择器没有影响

注意:在某些情况下,添加通用选择器可以使选择器更易于阅读,即使它对匹配行为没有影响。例如,div :first-childdiv:first-child 乍一看有点难以区分,但将前者写成 div *:first-child 可以明显看出区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2016-06-24
    • 2013-08-07
    • 2012-08-07
    相关资源
    最近更新 更多