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

实现Div无限循环左滚动(吃豆人效果)及Splide组件问题解决

实现子元素无限向左滚动的循环动画(Splide组件解决方案)

问题背景

我有一个包含6个子div的.container容器,每个子div尺寸为25rem×25rem,基础代码如下:

基础CSS代码

.container {
  display: flex;
  gap: 1rem;
}

.container>div {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  border-radius: 1rem;
  box-shadow: rgba(24, 29, 38, 0.24) 0px 0px 0px, rgba(24, 29, 38, 0.08) 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 0px 0px;
  width: 25rem;
  border: 1px solid lightgray;
  padding: 1rem;
  height: 25rem;
}

基础HTML代码

<div class='container'>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>

需求:实现子div向左无限滚动的动画,元素移出屏幕后从右侧重新出现,形成类似"吃豆人"穿越屏幕的循环效果。

尝试过程与问题

我尝试使用Splide组件实现该效果,但遇到元素无法自动播放和滚动的问题,当时的代码如下:

<Splide
  options={{
    type: 'slide',
    perPage: 2,
    drag: 'free',
    focus: 'center',
    autoplay: true,
    arrows: false,
    start: 4,
    pagination: false,
    wheel: true,
    interval: 3000,
    direction: 'rtl', // 设置为从右到左方向
  }}
>
  <SplideSlide>🟡</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
</Splide>

最终解决方案

在@TanishqS的帮助下,通过引入Splide的AutoScroll扩展并调整配置参数,成功实现了需求效果,最终代码如下:

import { AutoScroll } from "@splidejs/splide-extension-auto-scroll";

<Splide
  className="splide"
  options={{
    type: "loop",
    pagination: false,
    wheel: true,
    direction: "ltr",
    interval: 3000,
    drag: "free",
    focus: "center",
    perPage: 5,
    autoplay: true,
    autoScroll: {
      speed: 1,
    },
    arrows: false,
    gap: '10px'
  }}
  extensions={{ AutoScroll }}
>
  <SplideSlide>🟡</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
  <SplideSlide>👾</SplideSlide>
</Splide>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:47:11