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

HTML/CSS实现背景图无限水平滚动:解决动画跳转问题

解决背景图无限滚动跳转问题

问题出在动画结束位置与起始位置的视觉衔接不匹配,导致滚动到终点后瞬间跳回起点。以下是具体修复方案:

核心原理

要实现无缝循环,必须满足两个条件:

  • 动画的位移量等于单个背景图宽度的负数
  • 容器宽度至少是单个背景图宽度的2倍

这样当动画滚动一个背景图宽度后,容器内重复的背景图会刚好填补左侧空缺,视觉上和起始状态完全一致,不会出现跳转。

修改后的代码

调整Tailwind配置

<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
  theme: {
    extend: {
      keyframes: {
        slide: {
          '0%': { transform: "translateX(0)" },
          '100%': { transform: "translateX(-200px)" }, // 改为单个背景图宽度的负数(示例图宽200px)
        },
        slidemobile: {
          from: { transform: "translateX(0)" },
          to: { transform: "translateX(-200px)" }, // 统一为单个图宽的负数
        },
      },
      animation: {
        slide: "slide 45s infinite linear",
        slidemobile: "slidemobile 20s infinite linear",
      },
    }
  }
}
</script>

调整容器样式

<div id="img-background" class="bg-contain bg-repeat-x h-full animate-slidemobile w-[400px] bg-[url('https://picsum.photos/200')] sm:w-[600px]">
</div>

关键说明

  • 示例中背景图宽度为200px,所以位移量设为-200px,容器宽度设为400px(2倍图宽),确保滚动时始终有重复的背景图衔接
  • 如果你的实际背景图宽度不同,只需对应修改translateX的数值和容器的w-[]值即可
  • 保持linear动画速度,避免加速/减速导致的视觉断层

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:31:52