CSS中img元素背景图片无法显示问题求助
问题分析与解决方案
核心问题
你给<img>元素设置背景图,但img的src图片会直接覆盖背景图——因为img的内容(src加载的图片)是前景层,背景图在img元素的底层,所以根本看不到。另外还有路径冗余和路径不一致的问题。
解决方案
方案1:把背景图移到父容器.child2上(推荐)
这是最合理的做法,让背景图作为父容器的装饰,img正常显示内容:
.child2 { background-image: url('assets/images/imageborder.png'); /* 和img的src路径保持一致,避免根路径导致加载失败 */ background-repeat: no-repeat; background-position: center bottom; /* 可根据预期效果调整位置,比如底部居中 */ background-size: 400px 30px; padding-bottom: 30px; /* 给背景图留出空间,避免被img挡住 */ } .child2 img { display: block; margin: 0 auto; /* 让img在容器中居中,匹配背景图位置 */ }
方案2:修改img元素显示背景图(不推荐,会隐藏src图片)
如果一定要用img的背景图,需要隐藏src的图片内容:
.child2 img { background-image: url('assets/images/imageborder.png'); background-repeat: no-repeat; background-position: center; background-size: 400px 30px; opacity: 0; /* 隐藏src图片,露出背景图 */ }
额外注意点
- 路径统一:背景图的url用了
/assets(根路径),而img的src是assets(相对路径),如果项目不是部署在根目录,根路径会导致图片找不到,建议统一用相对路径。 - 冗余代码清理:你写了两次
background-size,后面的400px 30px会覆盖前面的cover,删掉其中一个即可。
内容的提问来源于stack exchange,提问作者randomcoder66785
相关产品推荐
相关产品推荐

