html - 带淡入淡出的背景图片幻灯片

标签 html css

我想在背景图片之间切换。我希望使用淡入淡出。当图片出现时,我希望它保持 100% 不透明度一段时间。目前我有问题如何弄清楚如何做到这一点,不透明度就像一个行走的导弹。

我有这个(节省空间但我知道我也应该使用 webkit 和 moz)。它有效,但看起来一旦不透明度为 100%,它就会开始减少,-我希望它在每张图片的 x 时间内保持在 100%,并且淡入淡出效果应该非常快:

.banner ul.kf-slider li {
    animation: fade-out 24s infinite both;
    background-image: url(images/photo1.jpg); 
}
@media (min-width: 58em) {
   .banner ul.kf-slider li {
        background-image: url(images/photo1.jpg); 
   } 
}
.banner ul.kf-slider li:nth-child(2) {
    background-image: url(images/photo2.jpg);
    animation-delay: 8s; 
}
@media (min-width: 58em) {
    .banner ul.kf-slider li:nth-child(2) {
        background-image: url(images/photo2.jpg); 
    } 
}
.banner ul.kf-slider li:nth-child(3) {
    background-image: url(images/photo3.jpg);
    animation-delay: 16s; 
}
@media (min-width: 58em) {
    .banner ul.kf-slider li:nth-child(3) {
    background-image: url(images/photo3.jpg); } 
}

@keyframes fade-in {
     0% {  opacity: 0; }
     100% { opacity: 1; } 
    }
}

@keyframes fade-out {
     33% {   opacity: 1; }
     66% {  opacity: 0; } 
}

html代码:

<section class="banner">
    <!--List items for bg images -->
    <ul class="kf-slider">
        <li></li>
        <li></li>
        <li></li>
    </ul>
</section>

最佳答案

一些通用问题

  • 您的媒体查询没有进行任何更改,因此我已将其删除。
  • 你没有使用 fadi-in 动画所以我删除了它
  • 你有一些额外的我删除了

由于您正在使用单个动画(您必须这样做,因为您正在为相同的属性设置动画),因此您需要在整个动画持续时间内为动画计时(它的时间需要所有图像淡入/淡出)

所以你的动画应该是这样的

  • 全部以不透明度 0 开头
  • 幻灯片淡入 2 秒,保持不透明 6 秒,再淡出 2 秒
  • 淡出的 2 秒与下一张幻灯片的淡入的 2 秒重合

因此,由于整个幻灯片放映需要 24 秒(应该称为淡入淡出,因为我们没有滑动任何东西),关键帧的每个 1 秒占整个持续时间的 4.1666%。

@keyframes fade-out {
  0% {opacity: 0;} /*start fading in*/
  8.333%{opacity:1} /*complete the fade in in 2 seconds*/
  33.333%{opacity:1} /*remain at opacity 1 until 8 seconds*/
  41.666% {opacity: 0;} /*fade out until 10 seconds*/
}

完整示例

.banner ul.kf-slider {
  list-style: none;
  margin: 0;
  padding: 0;
}
.banner ul.kf-slider li {
  width: 300px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
  opacity:0;
  
  animation: fade-out 24s infinite;
  background-image: url(https://dummyimage.com/300x200&text=Image1);
}
.banner ul.kf-slider li:nth-child(2) {
  background-image: url(https://dummyimage.com/300x200&text=Image2);
  animation-delay: 8s;
}
.banner ul.kf-slider li:nth-child(3) {
  background-image: url(https://dummyimage.com/300x200&text=Image3);
  animation-delay: 16s;
}
@keyframes fade-out {
  0% {opacity: 0;}
  8.333%{opacity:1}
  33.333%{opacity:1}
  41.666% {opacity: 0;}
}
<section class="banner">
  <!--List items for bg images -->
  <ul class="kf-slider">
    <li></li>
    <li></li>
    <li></li>
  </ul>
</section>

关于html - 带淡入淡出的背景图片幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595719/

相关文章:

Javascript - 编辑类而不是 ID 不起作用/编辑类的高度

PHP - 从文本字段中获取文本以放入小部件

javascript - Bootstrap 博客修复了侧边栏问题

html - 如何在 Canvas 上绘制负 x 和 y 值

javascript - div 元素的高度返回零

html - CSS跳跃动画

html - 在深入研究 CSS 之前,您需要对 HTML 了解多少?

.net - 在 asp.net 应用程序 View 中固定元素位置

html - 视差站点使图像变暗而不是文本

css - Bootstrap - 如何使导航栏按钮宽度相等