CSS动画延迟(img显示时间)

时间:2015-02-27 07:32:07

标签: html css css3 slideshow

我有这个CSS:

@-webkit-keyframes sliderFadeInOut {
 0% {
   opacity:1;
 }
 17% {
   opacity:1;
 }
 25% {
   opacity:0;
 }
 92% {
   opacity:0;
 }
 100% {
   opacity:1;
 }
}

@-moz-keyframes sliderFadeInOut {
 0% {
   opacity:1;
 }
 17% {
   opacity:1;
 }
 25% {
   opacity:0;
 }
 92% {
   opacity:0;
 }
 100% {
   opacity:1;
 }
}

@-o-keyframes sliderFadeInOut {
 0% {
   opacity:1;
 }
 17% {
   opacity:1;
 }
 25% {
   opacity:0;
 }
 92% {
   opacity:0;
 }
 100% {
   opacity:1;
 }
}

@keyframes sliderFadeInOut {
 0% {
   opacity:1;
 }
 17% {
   opacity:1;
 }
 25% {
   opacity:0;
 }
 92% {
   opacity:0;
 }
 100% {
   opacity:1;
 }
}

#slider {
background-size: cover;
position: fixed;
top: 100px;
bottom: 0px;
height:calc(100%-135px);
width: 100%;
}
#slider img {
border: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
margin: 0px;
width: 100%;
height: 100%;
position:absolute;
left:0;
-webkit-transition: opacity 1s ease-in-out;
-moz-transition: opacity 1s ease-in-out;
-o-transition: opacity 1s ease-in-out;
transition: opacity 1s ease-in-out;
  
}

#slider img {
  -webkit-animation-name: sliderFadeInOut;
  -webkit-animation-timing-function: ease-in-out;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-duration: 10s;

  -moz-animation-name: sliderFadeInOut;
  -moz-animation-timing-function: ease-in-out;
  -moz-animation-iteration-count: infinite;
  -moz-animation-duration: 8s;

  -o-animation-name: sliderFadeInOut;
  -o-animation-timing-function: ease-in-out;
  -o-animation-iteration-count: infinite;
  -o-animation-duration: 8s;

  animation-name: sliderFadeInOut;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-duration: 8s;
}
#slider img:nth-of-type(1) {
  -webkit-animation-delay: 6s;
  -moz-animation-delay: 6s;
  -o-animation-delay: 6s;
  animation-delay: 6s;
}
#slider img:nth-of-type(2) {
  -webkit-animation-delay: 4s;
  -moz-animation-delay: 4s;
  -o-animation-delay: 4s;
  animation-delay: 4s;
}
#slider img:nth-of-type(3) {
  -webkit-animation-delay: 2s;
  -moz-animation-delay: 2s;
  -o-animation-delay: 2s;
  animation-delay: 2s;
}
#slider img:nth-of-type(4) {
  -webkit-animation-delay: 0;
  -moz-animation-delay: 0;
  -o-animation-delay: 0;
  animation-delay: 0;
}

我正在学习CSS动画,但我没有找到如何设置一个图像的显示时间。

我试图改变动画延迟,但这只会造成麻烦......

你知道怎么做吗?

祝你好运

1 个答案:

答案 0 :(得分:0)

有几件事需要引起注意。这是我如何完成它,虽然还有其他方法。

对于动画本身:

@keyframes sliderFadeInOut {
 0% {
   opacity:0;
 }
 17% {
   opacity:1;
 }
 25% {
   opacity:1;
 }
 92% {
   opacity:1;
 }
 100% {
   opacity:0;
 }
}

这会导致图像淡入,然后在我们设置的任何animation-duration处淡出。

animation-iteration-count设置为1,这样动画就会运行一次。

 animation-iteration-count: 1;

堆栈中的每个图像都需要定时显示,然后随着堆栈中的下一个图像变得可见而消失。为此,请使用animation-delay并为堆栈中的每个图像增加它。

#slider img:nth-child(1) {
  animation-delay: 0s;
}
#slider img:nth-child(2) {
  animation-delay: 4s;
  opacity:0;
}
#slider img:nth-child(3) {
  animation-delay: 8s;
   opacity:0;
}

#slider img:nth-child(4) {
  animation-delay: 12s;
  opacity:0;
}

交错的animation-delay属性会导致堆栈中的第一个图像最初显示。它的动画需要5秒钟,导致图像消失。在4秒时,堆栈中的第二个图像启动它的动画,就像第一个图像消失一样。然后继续拍摄第3张和第4张照片。

在上面的代码中,第2张,第3张和第4张图片的初始opacity属性也是如此。这是最初隐藏它们所必需的。

现在,它的设置只会循环一次。对animation-delayanimation-iteration-count进行一些小修改会导致它无限循环。

这是工作demo