为什么我的 CSS3 跑马灯动画会重新启动?

Why Does My CSS3 Marquee Animation Restart?

所以我知道选取框动画完全是 1999 年的样子,但我的项目确实需要滚动文本。

基本上,我有一个文本应该在浏览器中一直滚动 window(视口?),并在开始时一直重新启动之前一直滚动到屏幕外。一个简单的选框。但是,当我加载页面时,文本只滚动了页面的一部分,然后在没有完成滚动的情况下重置到开头。

这是我的代码(link 文本来自我之前遇到但已经解决的问题。)

a {
 margin: auto;
    text-decoration: none;
 -webkit-animation: marquee 10s linear infinite;
 }

@-webkit-keyframes marquee {
 0% { -webkit-transform: translateX(1500px) }
 100% { -webkit-transform: translateX(-500px) }
 }
<!DOCTYPE html>
<html>
<head>
</head>

<body>
  <a href="www.nytimes.com">It looks like each element is running into the next because they are all separate objects and each one subtracts 
a certain amount of space from the total width, causing the others behind it to move faster.</a>
 
</body>
</html>

我试过更改元素的定位 属性 和动画持续时间,但似乎没有什么能给我如此迫切想要的结果?

您可以使用 vw,它用于视口宽度。这是一个百分比,尽管您没有添加百分号。所以 100vw 是视口宽度的 100%。然后您可以从 100% 到 -100% 选取框以将文本从右移到左。 100vw 表示文本刚好从右侧屏幕外开始。 -100vw 表示文本移动直到离开左侧,假设 a 标签本身(最多)是屏幕的宽度(最多 100vw)。

动画的结束值应该是元素宽度的负值。例如,如果您的标签宽度为 200px,则动画的起始值仍应为 100vw,但结束值应为 -200px。

a {
  margin: auto;
  text-decoration: none;
  -webkit-animation: marquee 10s linear infinite;
}
@-webkit-keyframes marquee {
  0% {
    -webkit-transform: translateX(100vw)
  }
  100% {
    -webkit-transform: translateX(-100vw)
  }
}
<!DOCTYPE html>
<html>

<head>
</head>

<body>
  <a href="www.nytimes.com">It looks like each element is running into the next because they are all separate objects and each one subtracts 
a certain amount of space from the total width, causing the others behind it to move faster.</a>

</body>

</html>

PS。不要忘记在上线前为动画添加其他供应商的前缀。