body 的 background 和 bgcolor 属性在 html5 中已彻底废弃,必须改用 css 的 background-image 和 background-color 设置;直接使用将被浏览器忽略,且无法通过 !important 或路径调整修复。

body 标签的 background 和 bgcolor 属性在现代开发中已不可用,直接写会失效或被浏览器忽略。
HTML5 中 body background 属性完全废弃
你写的 在任何 HTML5 文档中都不会生效。浏览器可能静默忽略,也可能报解析警告(尤其在 strict 模式下)。这不是兼容性问题,而是标准移除 —— XHTML 1.0 Strict 就已不支持,HTML5 更是彻底删除。
- 实际效果:图片不显示,控制台可能输出
Unknown property 'background'类似提示(取决于浏览器) - 别指望加
!important或换路径能救回来 —— DOM 解析阶段就跳过了这个属性 - 如果旧项目还在用,必须替换为 CSS,否则在新 Chrome/Firefox/Safari 中必然失败
background-image 必须用 CSS 设置,且推荐内联 style 或外部 class
正确写法只有一种主流路径:style 属性或 CSS 文件中对 body 设置 background-image。注意不是 background 简写(容易漏掉关键行为)。
- 基础可用写法:
-
background-size: cover是全屏适配关键 —— 否则小图会平铺,大图会被裁剪或留白 - 移动端务必加
background-attachment: fixed要谨慎:iOS Safari 会禁用该值并回退为scroll,导致视差失效 - 避免用
background: url(...) no-repeat center/cover这种简写 —— 如果后续 JS 动态改background-color,整个简写值会被覆盖重置
bgcolor 同样废弃,background-color 才是正解
不再合法。即使它“看起来”生效,本质是浏览器的容错渲染,不能保证跨版本一致。
- 正确替代:
或通过 class 控制 - 十六进制、rgb、hsl 均可,但不要混用命名色(如
black)—— 部分老旧 Android WebView 对命名色支持不稳定 - 若需透明背景(比如嵌入 iframe 场景),用
background-color: rgba(0,0,0,0.8),纯transparent在部分 IE 衍生内核中表现异常
动态改背景时,别直接操作 body.background 属性
document.body.background 是只读属性(返回空字符串),赋值无效。DOM 层面没有这个 setter。
- 想用 JS 切背景图?必须走 CSS:
document.body.style.backgroundImage = "url(new.jpg)" - 批量控制?优先用 class 切换:
document.body.className = "theme-dark",CSS 中定义.theme-dark { background-image: ... } - 注意:
backgroundImage的值必须带url()包裹,不能只传路径字符串,否则无效
真正麻烦的不是写法,而是团队里还有人从老教程复制 bgcolor 或用 Dreamweaver 导出的过期代码 —— 这些在 DevTools 里看不出报错,但上线后 iOS 用户第一眼就看到白底。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











