移动端背景图白线解决方案
2026-08-10 10:05小吴
现象还原
在移动端(尤其是iOS Safari和部分Android WebView),当使用background-image或<img>作为全屏背景时,底部或右侧偶尔会出现一条1-3px的细线。它可能是白色,也可能是半透明,不是边框,不是间距,像贴了块胶带,严重破坏页面的沉浸感。
为什么会有这条线?
一句话:浏览器计算像素时四舍五入,背景图比容器小了1px,底层颜色就露出来了。
100vh在不同设备上换算成整数像素后,再配合 background-size: cover,边缘误差就这么产生了。
常见三种解决方案
第一种方案:加背景色(最推荐)
.bg {
background-color: #000; /* 和图片边缘颜色一致 */
background-image: url('bg.jpg');
background-size: cover;
}
能解决90%的问题,因为露出来的就是背景色。
第二种方案:稍微放大一点
.bg {
background-image: url('bg.jpg');
background-size: calc(100% + 2px) calc(100% + 2px);
background-position: center;
}
放大2px让图覆盖边缘,瑕疵直接被裁掉。
第三种方案:伪元素兜底(终极方案)
.bg {
position: relative;
overflow: hidden;
}
.bg::before {
content: '';
position: absolute;
inset: -2px; /* 四边各扩大2px */
background-image: url('bg.jpg');
background-size: cover;
background-position: center;
z-index: 0;
}
让背景独立于容器之外,物理上杜绝缝隙。
先加背景色,再考虑放大,最后用伪元素兜底。 选一个方案塞进项目里,这条线就再也没出现过。
小提示: 如果用的是
<img> 标签,加一行 display: block 或 vertical-align: bottom 就能解决默认间隙问题。
曝光185浏览12

