无限的水平CSS动画删除初始填充

时间:2020-03-30 18:00:50

标签: html css

我想实现无限的水平动画。它可以正常工作,但是开始在屏幕外部,然后进行动画处理-如何实现将初始位置放置在屏幕内部然后开始?

.marquee {
    margin: 0 auto;
    white-space: nowrap;
    overflow: hidden;
    position: absolute;
}

.marquee span {
    display: inline-block;
    padding-left: 100%;
    animation: marquee 5s linear infinite;
}

.marquee2 span {
    animation-delay: 2.5s;
}

@keyframes marquee {
    0% {
        transform: translate(0, 0);
    }
    100% {
        transform: translate(-100%, 0);
    }
}
<h1 class="marquee">
<span>Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test</span>
</h1>

<h1 class="marquee marquee2">
<span>&nbsp;Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test</span>
</h1>

1 个答案:

答案 0 :(得分:1)

使用负延迟,以便动画从中间开始:

.marquee {
  margin: 0 auto;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
}

.marquee span {
  display: inline-block;
  padding-left: 100%;
  animation: marquee 5s -2.5s linear infinite;
}

.marquee2 span {
  animation-delay: 0s;
}

@keyframes marquee {
  0% {
    transform: translate(0, 0);
  }
  100% {
    transform: translate(-100%, 0);
  }
}
<h1 class="marquee">
  <span>Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test</span>
</h1>

<h1 class="marquee marquee2">
  <span>&nbsp;Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test</span>
</h1>