虽然两者在风格结果方面是相同的,但还有一些其他因素需要牢记。
使用*
会增加文件大小
如果您不使用删除不需要的星号的 CSS 缩小器(去除不需要的数据,例如额外的空格),*
则每次未指定标记时使用会导致文件中出现大量额外字符,这将导致加载时间更长(和更多的带宽使用)。虽然我不会浏览一个大文件并删除已经存在的星号(除非您真的有时间这样做并且喜欢可能导致您多年不会发现的错误的繁琐任务),但我建议不要包括不需要的星号在编写新样式并在编辑旧样式时删除不需要的星号时。
使用*
会导致混乱
在不需要时使用*
可能会导致混乱,尤其是当新人正在从事该项目并且没有处理在*
不需要时出现时(这很常见)。
例子
/**
* This matches an element with the class `alert` within
* any element within an `article` element
*/
article * .alert { /* ... */ }
对比
/**
* This matches an element with the class `alert` within
* an `article` element
*/
article *.alert { /* ... */ }
如果项目中存在 100% 的一致性(并且所有参与项目的人员都知道该风格),那么第一个示例将永远不会发生(article * *.alert
取而代之的是)。然而,这是一个理想的情况,并且很可能会在几代开发人员之后分崩离析(人们喜欢使用自己的风格)。因此,即使您有一致的风格,新员工也可能会进来并在短时间内以自己的风格编写,或者错误地阅读当前风格并生成与选择器不匹配的代码(反之亦然)。因此,我建议坚持我在项目和网站中看到最多(阅读:独家)的标准:
如果不需要,请勿使用星号。
快速浏览一些知名网站(例如 Facebook、Google、Yahoo 等)的来源会发现,除非必须(即使是非缩小样式),否则它们不会使用星号。您还可以查看GitHub 上的一些开源项目。
结论
只有在绝对需要时才应使用星号(例如,body * p
匹配具有除正文以外的父级的段落)。这不仅是不成文的标准(并且不太可能引起混淆),而且还减小了样式表的文件大小,从而提高了网站的加载速度。