微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅使用css的文本淡入淡出与多个文本块

如何解决仅使用css的文本淡入淡出与多个文本块

我有3块文字。我希望块1淡入并显示3秒钟,然后淡出。一旦其不透明度达到0,我希望文本块2淡入并显示3秒钟...与文本块3相同。我想可以通过将am动画分配给所有3个不同的{{1 }},但它们似乎最终都会统一显示

invokeLambda

我知道可以用3个单独的动画来完成:

animation-delay

但这是1次管理/编辑的噩梦,尤其是3次(尤其是具有更复杂的关键帧)的麻烦-有更好的方法吗?

我知道可以使用JavaScript轻松完成此操作,但是我需要仅CSS的解决方案。有人可以看到我在做什么错吗?

解决方法

h2 {
  opacity: 0;
  animation-name: textFader;
  animation-duration: 18s; /* <---{ 6sec * num(H2) = 18sec } */
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
}

h2:first-of-type { animation-delay: 0s; }
h2:nth-of-type(2) { animation-delay: 6s; }
h2:last-of-type { animation-delay: 12s; }

@keyframes textFader {
  0% {
    opacity: 0;
  } /* fade-in */
  11% {
    opacity: 1;
  } /* show */
  22% {
    opacity: 1;
  } /* fade-out */
  33% { /* <-------------------{ 100% / num(H2) = 33% } */
    opacity: 0;
  } /* waiting for the finish animation of other blocks */
  100% {
    opacity: 0;
  }
}
<main>
  <h2>Text block 1</h2>
  <h2>Text block 2</h2>
  <h2>Text block 3</h2>
</main>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。