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

如何用CSS实现流畅的无限循环Marquee跑马灯?

修复CSS无限循环Marquee跑马灯的卡顿回退问题

问题描述

尝试用CSS实现无限循环Marquee跑马灯,需求是当一个盒子移出屏幕时,新盒子从左侧进入,始终保持屏幕上有盒子且滚动流畅。但当前代码效果不符合预期:当第10个盒子移出后,循环会突然回退,无法流畅滚动。

现有HTML代码

<div class="marquee">
    <div class="slide">
        <div class="box"></div>
        <!-- 正式代码中有20个.box元素 -->
    </div>
</div>

现有CSS代码

.marquee{
    display: flex;
    position: relative;
    overflow-x: hidden;
    max-width: 100%;
}
.slide{
    white-space: nowrap;
    will-change: transform;
    animation: marquee 4s linear infinite;
    display: flex;
}
@keyframes marquee {
    from{transform:translateX(-10%);}
    to{transform:translateX(+10%) ;}
}
.box{
    width: 150px;
    height: 150px;
    border: 2px solid #000;
    border-radius: 10px;
    margin-right: 15px;
    margin-left: 15px;
}

修复方案

当前问题核心是动画起始/结束状态无法无缝衔接,且内容量不足以支撑视觉连续性。通过以下两步解决:

  • 复制内容组,消除视觉断裂:在.slide内复制一份所有.box元素,让第一组内容滚出屏幕时,第二组内容刚好衔接,避免空白或回退。
  • 精准设置动画位移:动画位移值等于单个内容组的总宽度,让动画结束位置与起始位置视觉完全一致,实现无缝循环。

修改后的完整代码

HTML代码

<div class="marquee">
    <div class="slide">
        <!-- 原有的20个.box元素 -->
        <div class="box"></div>
        <div class="box"></div>
        <!-- 复制一份相同的20个.box元素 -->
        <div class="box"></div>
        <div class="box"></div>
    </div>
</div>

CSS代码

.marquee{
    position: relative;
    overflow-x: hidden;
    max-width: 100%;
}
.slide{
    display: flex;
    will-change: transform;
    /* 动画时长按需调整,内容越多可适当拉长 */
    animation: marquee 15s linear infinite;
}
/* 单个内容组总宽度:20*(150px宽度 + 15px左margin +15px右margin) = 3600px */
@keyframes marquee {
    0% {
        transform: translateX(0);
    }
    100% {
        transform: translateX(-3600px);
    }
}
.box{
    width: 150px;
    height: 150px;
    border: 2px solid #000;
    border-radius: 10px;
    margin: 0 15px;
}

关键说明

  • 复制内容组是为了保证滚动到末尾时,后续内容与开头完全一致,视觉上无断裂感。
  • 位移值必须精确匹配单个内容组的总宽度,否则动画循环时会出现跳变。
  • 动画时长可根据需求调整,追求慢滚动效果就拉长时长,反之则缩短。

内容的提问来源于stack exchange,提问作者Samet Seçer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:15:14