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

CSS实现ul列表项逐一轮播动画时出现项重叠问题如何解决

问题原因

你当前的代码出现重叠主要有两个核心问题:

  • 使用了animation-direction: alternate参数,动画正向播放完成后会反向回放,等于单个元素的完整显隐周期翻倍,和你设置的4个元素的错开延迟完全不匹配
  • 单元素动画时长、延迟间隔的总周期没有和元素数量对齐,第4个元素开始播放时,第1个元素的反向动画刚好进入显示区间,就会出现重叠

修复方案

直接移除alternate参数,调整动画关键帧和时长匹配4个元素的轮播周期即可,修复后代码如下:

CSS代码

/* 调整关键帧,适配单元素16s总周期,对应4个元素每个占4s的轮播节奏 */
@keyframes fadeCycle {
  0% {
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
  30% {
    opacity: 1;
  }
  40% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}

li {
  list-style: none;
  padding: 0;
  font-size: 40px;
  position: absolute;
  width: 100%;
  opacity: 0;
  /* 移除alternate,用单向循环动画 */
  animation: fadeCycle 16s ease-in-out infinite;
}

li:nth-of-type(1) {
  animation-delay: 0s;
}

li:nth-of-type(2) {
  animation-delay: 4s;
}

li:nth-of-type(3) {
  animation-delay: 8s;
}

li:nth-of-type(4) {
  animation-delay: 12s;
}

HTML代码不需要改动

<ul class="usp__list">
  <li class="usp__item">
    Item 1
  </li>
  <li class="usp__item">
    Item 2
  </li>
  <li class="usp__item">
    Item 3
  </li>
  <li class="usp__item">
    Item 4
  </li>
</ul>

效果说明

修改后每个元素依次渐入、停留、渐出,切换过程有自然的淡入淡出过渡,不会出现多个元素完全显示的重叠问题。如果需要调整单个元素的停留时长,只需要等比例修改关键帧的百分比即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:36:06