最终没有空间的CSS3 Marquee/Ticker动画

SDu*_*ude 1 html javascript css3 css-animations

我正在建立一个带有2个项目集合的选框/旋转木马效果.使用两个item-collection跨度translateX并不困难(这里是小提琴),但我不喜欢每个循环结束时的空白空间.

在此输入图像描述

知道两个集合的宽度可能不同,我怎么能达到"连续性"的效果,所以在第一个循环之后,第一个集合(青色)出现在第二个集合(洋红色)之后.

任何指向CSS或JS解决方案的指针都非常受欢迎... =)

val*_*als 6

如果选取框足够大,您可以在动画中期交换其中一个集合.

我认为,这就是你可以单独使用CSS

.marquee {
  width: 100%;
  height: 80px;
  margin: 0 auto;
  overflow: hidden;
  white-space: nowrap;
  border: 1px solid blue;
}
.marquee-content {
  display: inline-block;
  margin-top: 5px;
  animation: marquee 5s linear infinite;
}
.item-collection-1 {
  position: relative;
  left: 0%;
  animation: swap 5s linear infinite;
}
@keyframes swap {
  0%, 50% {
    left: 0%;
  }
  50.01%,
  100% {
    left: 100%;
  }
}
.marquee-content:hover {
  animation-play-state: paused
}
.item1 {
  display: inline-block;
  height: 70px;
  width: 140px;
  background: cyan;
  vertical-align: top;
  margin-left: 15px;
}
.item2 {
  display: inline-block;
  height: 70px;
  width: 100px;
  background: magenta;
  vertical-align: top;
  margin-left: 15px;
  line-height: 14px;
}
/* Transition */

@keyframes marquee {
  0% {
    transform: translateX(0)
  }
  100% {
    transform: translateX(-100%)
  }
}
Run Code Online (Sandbox Code Playgroud)
<div class="marquee">
  <div class="marquee-content">
    <span class="item-collection-1">
      <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    </span>
    <span class="item-collection-2">
      <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    </span>
  </div>
  <div>
Run Code Online (Sandbox Code Playgroud)