html - 过渡淡入淡出时无法获得正确的时间

标签 html css css-transitions

我似乎无法准确把握转换时间:

我希望每个元素都很好地淡入,然后保持可见 5 秒,然后很好地淡出到下一个元素,然后重复。并在无限循环中(正在运行)

@keyframes fadeinout {
  0% { opacity: 0; },
  6% { opacity: 1; },
  34% { opacity: 1; },
  40% { opacity: 0; }
}

@-webkit-keyframes fadeinout {
  50% { opacity: 1; }
}

@keyframes fadeinout {
  50% { opacity: 1; }
}

.e {
  opacity: 0;
  position: absolute;
}

.one {
  background: red;
  animation: fadeinout 3s infinite 1s;
}

.two {
  background: green;
  animation: fadeinout 3s infinite 2s;
}

.three {
  background: yellow;
  animation: fadeinout 3s infinite 3s;
}
<ul class="my-list">
  <li class="e one">item one</li>
  <li class="e two">item two</li>
  <li class="e three">item three</li>
</ul>

请参阅此 CodePen:https://codepen.io/pbul2004/pen/zYOjzRa

最佳答案

首先在关键帧中包含“停留”模式,使元素保持可见 5 秒,其次为每个动画添加 5 秒的延迟,为什么要应用动画属性。

.e {
  opacity: 0;
  position: absolute;
}

@keyframes fadeinout {
  0%, 40% { opacity: 0; }
  6%, 34% { opacity: 1; }  /* "stay" mode */ 
}
.one {
  background:red;
  animation: fadeinout 15s infinite 1s;
}
.two {
  background:green;
  animation: fadeinout 15s infinite 6s; /* Offset */
}
.three {
  background:yellow;
  animation: fadeinout 15s infinite 11s; /* Offset */
}
<ul class="my-list">
  <li class="e one">item one</li>
  <li class="e two">item two</li>
  <li class="e three">item three</li>
</ul>

每个元素的可见模式将在其他两个元素的隐藏模式期间出现。一旦理解了这个想法,您就可以微调持续时间和延迟 :)(例如,我故意重叠淡入淡出)

关于html - 过渡淡入淡出时无法获得正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57896442/

相关文章:

javascript - 对上传的文本文件进行处理

javascript - 使用 ng-repeat 动态访问数组

javascript - 使用 "background-size: contain"获取调整大小的背景图像的高度

jQuery Waypoints 使用 CSS Transition 刷新

javascript - CSS z-index 和变换奇怪的 flash

HTML5 从默认麦克风捕获音频

html - 如何强制我的 Logo 在移动设备上变小并位于左上角?

css - 防止 Angular Material md-autocomplete 中的 css 继承

javascript - 动态添加 td 不会通过 colspan 展开

javascript - 如何为 CSS 框阴影深度设置动画(使用 jQuery 或 CSS3 过渡)?