爱名网(22科技集团)

移动端背景图白线解决方案

2026-08-10 10:05小吴

现象还原

在移动端(尤其是iOS Safari和部分Android WebView),当使用background-image<img>作为全屏背景时,底部或右侧偶尔会出现一条1-3px的细线。它可能是白色,也可能是半透明,不是边框,不是间距,像贴了块胶带,严重破坏页面的沉浸感。

背景图底部那条白线,1分钟搞定

为什么会有这条线?

一句话:浏览器计算像素时四舍五入,背景图比容器小了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: blockvertical-align: bottom 就能解决默认间隙问题。
曝光189浏览14