【发布时间】:2011-12-21 17:29:16
【问题描述】:
我正在尝试在我的照片库中的图像之间创建一个优雅的过渡,而不使用 ":hover" 或一次 Javascript。 (我仍然对 HTML5 持开放态度)
动画,这个幻灯片,应该在页面加载时开始,不需要用户交互。但是我的 CSS 没有正确计时。理想情况下,每 6 秒,当前图像开始淡出,就像下一张图像开始淡入一样。动画应该在最后一张图像之后无限循环。
我正在使用图像之间的延迟来尝试错开动画,但图像彼此重叠太多。我似乎误解了很多事情。我的CSS如下:
#imgContainer {
height: 205px;
position: relative;
width: 300px;
}
#imgContainer img {
-moz-animation-duration: 12s;
-moz-animation-iteration-count: infinite;
-moz-animation-name: FadeInOut;
-moz-animation-timing-function: ease-in-out;
left: 0;
position: absolute;
}
#imgContainer img:nth-of-type(1) {
-moz-animation-delay: 0s;
}
#imgContainer img:nth-of-type(2) {
-moz-animation-delay: 6s;
}
#imgContainer img:nth-of-type(3) {
-moz-animation-delay: 12s;
}
@-moz-keyframes FadeInOut {
0% {
opacity:0;
}
100% {
opacity:1;
}
}
我真的是 css3 的新手,所以任何形式的帮助都将不胜感激。
【问题讨论】:
-
我已经尝试过几次,并认为 JS 计时器加上 CSS 转换是一种更好的方法,原因有很多。
-
您好 Rich,感谢您的反馈。您能否简要谈谈您处理 CSS 转换的方法。如果 JS 计时器本身并没有真正进行转换,我可以使用它。
-
我只是使用设置过渡属性,将图像放在彼此的顶部,然后将顶部图像的不透明度更改为 0。完成后,我将顶部图像的 src 更改为底部图像,移除过渡道具,然后将不透明度改回 1。
-
对于您的项目,我会将所有图像放在一起,将所有图像的不透明度设置为 0,除了我要显示的图像。在所有这些上设置过渡。然后使用 JS 计时器将所有这些的不透明度切换为 0,但在您要显示的下一张图像上切换为 1。无限重复。
-
感谢您与我分享,Rich。非常感谢。
标签: html css slideshow css-transitions