You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按字母排序的CSS选择器:用途、起源及未包含元素疑问

关于CSS全局样式归一化的常见疑问解答

嘿,我来一步步解答你的疑问~

一、为什么要使用这种按字母排序的CSS选择器?它起源于何处?

首先,这种写法其实是CSS样式归一化(Normalize) 的一种实现方式,最早是为了解决不同浏览器对HTML元素的默认样式差异问题——比如有的浏览器给<p>加了默认margin,有的给<ul>加了内边距,导致页面在不同浏览器里显示不一致。

至于按字母排序,纯粹是为了代码可读性和维护性:把所有要重置的元素按字母排好,后面要加新元素或者修改的时候,能快速找到对应的选择器,避免重复或者遗漏。

那为什么不用*选择器呢?原因有两个:

  • 性能问题:*会匹配页面上的所有元素,包括那些你根本不需要重置的(比如<script>、<style>、<meta>这些不可见的头部元素),额外增加浏览器的渲染计算量。
  • 不必要的覆盖:有些元素的默认样式其实是有用的,或者你不想去修改它们,用*会一刀切地改掉所有元素的样式,反而可能引入新的问题。

二、哪些元素不需要进行样式归一化?

你贴的这个选择器列表已经把大部分需要重置的可见元素都包含了,那些被排除在外的,大多是非可视化元素或者有特殊默认功能的元素,比如:

  • <script>、<style>、<link>、<meta>、<title>:这些都是页面的功能性元素,不会在页面上显示,根本不需要重置样式。
  • <input>、<button>、<select>、<textarea>:这类表单元素的默认样式(比如按钮的边框、输入框的内边距)其实和用户交互相关,直接重置可能会破坏原生的交互体验,通常会单独处理它们的样式,而不是和普通元素一起批量重置。
  • <br>、<hr>:换行和水平线元素有自己的特殊功能,默认样式一般不需要重置,或者只需要针对性调整。
  • <noscript>:只有在浏览器禁用JS时才会显示,通常也不需要加入全局重置。
  • <template>:用于HTML模板,本身不会渲染到页面上,不需要样式重置。

简单来说,只有那些会在页面上显示、且默认样式在不同浏览器有差异的块级/行内元素,才会被放进这种批量重置的选择器里。

内容的提问来源于stack exchange,提问作者Qiulang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:17:55