css3 循环列表中的单词

css3 cycle words in a list

我正在尝试使用 UL 中的 Li 条目一次显示一个词。该循环是通过 CSS3 动画实现的。我可以按顺序显示单词,但不确定如何在下一个单词出现之前隐藏当前单词:

#list {position:relative}
#list li {
    animation: showWord 2.5s linear infinite 0s;
    position:absolute;
    opacity:0;
}

#list li:nth-child(2) {
 animation-delay: 0.5s;
}
#list li:nth-child(3) {
 animation-delay: 1s;
}
#list li:nth-child(4) {
 animation-delay: 1.5s;
}
#list li:nth-child(5) {
 animation-delay: 2s;
}

@keyframes showWord {
 from,
  49.9% {
    opacity: 1;
  }
  50%,
  to {
    opacity: 0;
  }
 
}

/* demo stylin' */

* {
  list-style-type:none;
  font-size:30px;
  font-family:courier
}
<ul id="list">
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
 <li>Four</li>
 <li>Five</li>
</ul>

只需删除 position: absolute

#list {position:relative}
#list li {
    animation: showWord 2.5s linear infinite 0s;
    opacity:0;
}

#list li:nth-child(2) {
 animation-delay: 0.5s;
}
#list li:nth-child(3) {
 animation-delay: 1s;
}
#list li:nth-child(4) {
 animation-delay: 1.5s;
}
#list li:nth-child(5) {
 animation-delay: 2s;
}

@keyframes showWord {
 from,
  49.9% {
    opacity: 1;
  }
  50%,
  to {
    opacity: 0;
  }
 
}

/* demo stylin' */

* {
  list-style-type:none;
  font-size:30px;
  font-family:courier
}
<ul id="list">
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
 <li>Four</li>
 <li>Five</li>
</ul>

没有 有一个 animation-delay 属性,但这对我们没有帮助。这会延迟动画的开始,但在开始后会持续 运行s。

#解决方案: 关键帧没有变化

你需要做一点心算:

我希望动画 运行 10 秒。

~加上~

我希望动画在迭代之间延迟 2 秒。

~ 等于 ~

总共 10 秒

所以当你调用关键帧动画时,你使用的是总秒数, 并且每次迭代延迟需要 2 秒以上:

#list {position:relative}
#list li {
    animation: showWord 10s linear infinite 0s;
    position:absolute;
    opacity:0;
}

#list li:nth-child(2) {
 animation-delay: 2s;
}
#list li:nth-child(3) {
 animation-delay: 4s;
}
#list li:nth-child(4) {
 animation-delay: 6s;
}
#list li:nth-child(5) {
 animation-delay: 8s;
}

@keyframes showWord {
  20%, 100% {
    opacity: 0;
  }
  0% {
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
}
/* demo stylin' */

* {
  list-style-type:none;
  font-size:30px;
  font-family:courier
}
<ul id="list">
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
 <li>Four</li>
 <li>Five</li>
</ul>

希望对你有帮助