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

为何通用选择器(*)会覆盖body元素选择器的样式?

问题原因分析

别担心,这个问题很常见,我来帮你理清楚~

你遇到的问题核心是CSS选择器的直接样式覆盖了继承样式:

  • 你用了*通配符选择器(它会匹配页面上所有元素),并给它设置了color: black。这意味着<h2>、<p>这些元素自己的文本颜色被直接设为黑色了。
  • 虽然你给<body>设置了color: red,但<h2>、<p>并不会继承这个红色——因为它们自己已经被*选择器赋予了明确的颜色值,继承的样式优先级低于直接作用在元素上的样式。
解决方案

根据你的需求,有两种简单的修复方式:

方式一:移除通配符里的color设置(推荐)

如果*选择器只是用来做全局重置(比如清除默认边距),把color: black从里面删掉就好,这样<body>的红色会自动继承给内部元素:

* {
  /* 保留你需要的全局样式,比如 margin: 0; padding: 0; */
}
body {
  font-family: "Courier New", Courier, monospace;
  line-height: 1.5em;
  color: red;
}

方式二:明确指定body内元素的颜色

如果你确实需要保留*的color: black,可以通过提高选择器优先级,直接给<body>内的元素设置红色:

* {
  color: black;
}
body {
  font-family: "Courier New", Courier, monospace;
  line-height: 1.5em;
}
body h2, body p {
  color: red;
}

这样修改后,页面上的文本就会显示你想要的红色啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:27:55