移动端背景图白边问题修复方案
关注
移动端全屏背景图边缘出现细线,源于浏览器像素四舍五入导致背景图比容器小1px。推荐优先设置匹配图片边缘的背景色,其次微调background-size,或用伪元素扩大覆盖范围彻底消除。
本文包含AI辅助创作内容
现象还原
在移动端(尤其是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 就能解决默认间隙问题。
阅读全文

请先 登录后发表评论 ~