text 属性已废弃,无法可靠设置主体色调;应使用 CSS 的 body { color: ... } 声明,通过继承机制控制默认字色,并配合显式重置确保一致性。

不要用 body 的 text 属性定义主体色调 —— 它早已被废弃,现代浏览器虽可能兼容,但不保证行为一致,且在 XHTML 或严格模式下直接失效。
为什么 text 属性不能用于现代文档配色
这个属性属于 HTML 3.2 时代的遗留写法,HTML 4.01 就已标记为 deprecated,XHTML 1.0 Strict 及所有 HTML5 文档类型完全不支持。它只作用于 <body> 内的纯文本节点,对内联元素(如 <span>、<a>)或后代样式无穿透力,也无法与 CSS 选择器、伪类、媒体查询协同工作。
常见错误现象包括:
- 在 Chrome/Firefox 新版本中设了
text="blue"却没生效,检查发现是文档声明了<!DOCTYPE html> - 用
text设颜色后,<h1>或<p>里的文字颜色仍为浏览器默认值 - 配合
link/vlink等老属性使用时,超链接颜色逻辑混乱,无法预测
CSS 的 color 是唯一可靠方案
用 body { color: #333; } 替代 <body text="#333">,能真正控制整个文档的“默认字色”基准。关键点在于:
- 必须写在
<style>标签内(推荐放在<head>中),或外链 CSS 文件里 - 该声明会作为继承源头,影响所有未显式重置
color的后代元素 - 若需局部覆盖(比如让
<footer>字变灰),直接写footer { color: #666; }即可,无需 hack - 支持全部 CSS 颜色语法:
red、#f00、rgb(255, 0, 0)、hsl(0, 100%, 50%)、甚至var(--text-primary)
示例:
<head>
<style>
body { color: #2c3e50; }
a { color: #3498db; }
a:visited { color: #9b59b6; }
</style>
</head>容易被忽略的继承细节
color 是可继承属性,但很多开发者误以为设了 body { color: … } 就万事大吉。实际要注意:
-
<input>、<textarea>等表单控件默认不继承body的color,它们有独立的 UA 样式,需单独声明 - 某些框架(如 Bootstrap)会重置全局
color,此时你的body规则可能被更具体的选择器覆盖 - 如果用了 CSS 自定义属性(
var()),确保其定义在 :root 或 body 上,且未被中间层意外覆盖
最稳妥的做法是:在 CSS 开头加一条 * { color: inherit; }(慎用,可能影响 SVG 文本等),或针对性重置关键组件。
真正要定义“主体色调”,靠的不是某个 HTML 属性,而是 CSS 的继承机制 + 显式重置策略。把 text 属性留在历史书里就行,别让它出现在你今天的代码里。

















