背景图不显示主因是路径错误、语法不合法、元素尺寸为0或被其他样式覆盖;CSS中路径相对CSS文件位置,须用url()包裹,注意大小写、空格及绝对路径以/开头。
浏览器控制台报 404 或直接空白,八成是路径没对上。CSS 里的 background-image 路径是相对于 CSS 文件所在位置计算的,不是 HTML 页面位置。
/static/css/style.css,图片在 /static/images/logo.png,就得写 url(../images/logo.png)
url(/images/logo.png)(注意开头的 /)bg-banner.png
Logo.png 和 logo.png 在 Linux 服务器上就是两个文件
少一个括号、多一个引号、漏了 url(),都会让整个声明失效,浏览器会静默忽略。
url() 包裹路径,不能只写 "images/bg.jpg"
url("images/bg.jpg");如果路径含括号或空格,必须加引号background-image: url("bg.jpg"); 后面没分号,可能影响后续样式解析background-image: url("a.jpg"), url("b.jpg");,顺序和 background-position 要对应background-image 不会撑开元素。如果 div 没内容、没设宽高、也没 padding,它实际是 0×0,自然看不到图。
background-color: red;,看色块有没有出现——有颜色没图,基本就是路径或属性问题width 和 height,或用 min-height: 100vh; 看效果看似写了 background-image,但可能被更高优先级规则干掉了,或者被某些属性“屏蔽”了。
background: none;、background: transparent; 或简写属性(如 background: #fff;)覆盖——简写会重置所有背景相关属性background-size: 0 0; 或 background-repeat: no-repeat; 配合错误的 background-position 可能让图跑出可视区overflow: hidden;,而背景图靠 background-position 偏移后超出范围,也会“消失”transform: translateZ(0);)在某些旧版 Safari 中会意外禁用背景图渲染/* 排查时可临时加这一段,确保基础可见 */
.my-element {
background-image: url("/images/test.png");
background-size: cover;
background-repeat: no-repeat;
background-position: center;
width: 300px;
height: 200px;
background-color: #eee; /* fallback */
}路径、语法、尺寸、覆盖,这四点串起来查一遍,95% 的背景图不显示问题都能定位。最容易被忽略的是路径相对基准和简写属性的覆盖效应——特别是团队协作时,别人改过全局 background 重置规则,你却只盯着自己的那行 background-image。