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

如何为CSS Keyframes实现的垂直新闻滚动条添加条目间延迟?

给纯CSS垂直新闻滚动条添加条目切换延迟

要解决新闻条目切换无间隔的问题,只需修改关键帧动画,增加停留阶段,并重新计算动画总时长即可。以下是调整后的完整代码:

修改后的CSS代码

@-webkit-keyframes ticker {
  /* 第一个条目:停留2秒(0% - 19.05%)*/
  0%, 19.05% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  /* 滚动到第二个条目:1.5秒(19.05% - 33.33%)*/
  19.05%, 33.33% {
    -webkit-transform: translate3d(0, -33.33%, 0);
    transform: translate3d(0, -33.33%, 0);
  }
  /* 第二个条目:停留2秒(33.33% - 52.38%)*/
  33.33%, 52.38% {
    -webkit-transform: translate3d(0, -33.33%, 0);
    transform: translate3d(0, -33.33%, 0);
  }
  /* 滚动到第三个条目:1.5秒(52.38% - 66.66%)*/
  52.38%, 66.66% {
    -webkit-transform: translate3d(0, -66.67%, 0);
    transform: translate3d(0, -66.67%, 0);
  }
  /* 第三个条目:停留2秒(66.66% - 85.71%)*/
  66.66%, 85.71% {
    -webkit-transform: translate3d(0, -66.67%, 0);
    transform: translate3d(0, -66.67%, 0);
  }
  /* 滚动回初始位置:1.5秒(85.71% - 100%)*/
  85.71%, 100% {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes ticker {
  /* 第一个条目:停留2秒(0% - 19.05%)*/
  0%, 19.05% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  /* 滚动到第二个条目:1.5秒(19.05% - 33.33%)*/
  19.05%, 33.33% {
    -webkit-transform: translate3d(0, -33.33%, 0);
    transform: translate3d(0, -33.33%, 0);
  }
  /* 第二个条目:停留2秒(33.33% - 52.38%)*/
  33.33%, 52.38% {
    -webkit-transform: translate3d(0, -33.33%, 0);
    transform: translate3d(0, -33.33%, 0);
  }
  /* 滚动到第三个条目:1.5秒(52.38% - 66.66%)*/
  52.38%, 66.66% {
    -webkit-transform: translate3d(0, -66.67%, 0);
    transform: translate3d(0, -66.67%, 0);
  }
  /* 第三个条目:停留2秒(66.66% - 85.71%)*/
  66.66%, 85.71% {
    -webkit-transform: translate3d(0, -66.67%, 0);
    transform: translate3d(0, -66.67%, 0);
  }
  /* 滚动回初始位置:1.5秒(85.71% - 100%)*/
  85.71%, 100% {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

.news-ticker {
  margin: 0 auto;
  border-radius: 4px;
  padding: 15px;
  background: #CFE2FF;
}

.news-wrapper {
  overflow: hidden;
  padding-left: 30px;
  background: transparent url('https://i.sstatic.net/LhFKIAAd.png') no-repeat left center;
}

.news-ticker ul {
  display: flex;
  flex-direction: column;
  height: 25px;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  -webkit-animation-name: ticker;
  animation-name: ticker;
  /* 总时长 = (停留时间2s + 滚动时间1.5s) × 3个条目 = 10.5s */
  -webkit-animation-duration: 10.5s;
  animation-duration: 10.5s;
}

.news-ticker li {
  color: #0043a7;
  white-space: nowrap;
  flex: 1;
  width: 100%;
}

HTML代码(无需修改)

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" />
<div class="container-fluid mt-3">
  <div class="news-ticker">
    <div class="news-wrapper">
      <ul class="list-unstyled m-0">
        <li>Lorem ipsum dolor sit amet consectetur, adipisicing elit.</li>
        <li>Molestias beatae recusandae ipsam animi non numquam itaque veritatis quaerat totam eligendi.</li>
        <li>Lorem ipsum dolor sit amet consectetur, adipisicing elit aperiam, distinctio.</li>
      </ul>
    </div>
  </div>
</div>

自定义调整说明

  • 修改停留时间:如果想让每个条目停留3秒,只需把总时长改为 (3 + 1.5) × 3 = 13.5s,然后重新计算关键帧的百分比(比如3秒占13.5秒的比例是3/13.5≈22.22%)
  • 修改滚动速度:调整滚动阶段的时间(比如把1.5秒改为1秒),同时对应修改总时长和关键帧百分比

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:39:55