You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS背景图片无法水平重复问题求助及代码排查

背景图片水平重复失效问题解决

问题详情

我想让.surface元素的背景图片水平重复,但效果没出来。页面代码如下:

CSS代码

body {
  margin: 0;
  background-image: linear-gradient(to top, #1e3c72 0%, #1e3c72 1%, #2a5298 100%);
  overflow: hidden;
}

.night {
  height: 80vh;
  width: 70vw;
  border: 1px solid black;
  margin: 5rem auto;
  background: url(http://placekitten.com/5/5);
  background-size: cover;
  position: relative;
  box-shadow: 1px 2px 60px rgba(0, 0, 0, 0.4);
  overflow-x: hidden;
}

.surface {
  height: 140px;
  width: 200px;
  background: url(http://placekitten.com/10/10);
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
  background-repeat: repeat-x;
  /*animation: moveRight 6s linear infinite;*/
}

.car {
  position: absolute;
  bottom: 8%;
}

HTML代码

<div class="night">
  <div class="surface"></div>
  <div class="car">
    <img src="http://placekitten.com/100/75" alt="Car">
  </div>
</div>

当前效果

当前显示效果

期望效果

期望显示效果

查了资料没找到语法问题,请问问题出在哪?

问题原因及修复方案

问题核心是**.surface的宽度太小**:你设置了width: 200px,这个宽度下背景图片的重复效果被压缩得几乎看不见,甚至因为元素宽度和背景图尺寸的比例关系,视觉上完全没体现出重复。

修复方法:

  • 第一步:把.surface的宽度改成100%,让它铺满父容器.night的宽度,给背景重复留出足够空间:
.surface {
  height: 140px;
  width: 100%; /* 替换原200px */
  background: url(http://placekitten.com/10/10);
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
  background-repeat: repeat-x;
  /*animation: moveRight 6s linear infinite;*/
}
  • 第二步(可选):如果想让重复效果更明显,可以给背景图设置固定尺寸,比如:
.surface {
  /* 其他样式不变 */
  background-size: 60px auto; /* 自定义背景图大小,让重复图案更清晰 */
}

修改后就能看到背景图片水平重复的效果了。


内容的提问来源于stack exchange,提问作者Gutsy Creatives

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:25:17