为什么不建议使用通配符初始化 CSS 样式?

采用 *{padding:0; margin:0;} 这样的写法好处是写起来很简单,但是是通配符,需要把所有的标签都遍历一遍,当网站较大时,样式比较多,这样写就大大的加强了网站运行的负载,会使网站加载的时候需要很长一段时间,因此一般大型的网站都有分层次的一套初始化样式。

出于性能的考虑,并不是所有标签都会有 padding 和 margin,因此对常见的具有默认 padding 和 margin 的元素初始化即可,并不需使用通配符 * 来初始化。

补充:

  • 通配符选择器 * 匹配所有元素,性能消耗大;现代 reset 库(如 Eric Meyer reset、modern-normalize)都只针对需要重置的元素。
  • *{ margin: 0; padding: 0; } 还会破坏一些元素的默认 UI(如 button、input),需要再写规则覆盖回来,得不偿失。
  • 实际项目推荐:用 normalize.css 打底 + 针对 body/ul/h1~h6/p 等常见元素定制 reset,配合 CSS 变量管理主题。