我尝试通过谷歌和这个论坛寻找解决我的问题的方法,但到目前为止没有运气。我想通过点击图片来暂停我的CSS3动画(图片幻灯片),并且也可以通过点击图片恢复到相同的动画。
我知道如何暂停幻灯片,并且我曾经能够恢复一次,但是如果尝试暂停和恢复多于一次,则会停止工作。以下是我的代码示例:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.pic {
position: absolute;
opacity: 0;
}
#pic1 {
-webkit-animation: pic1 4s infinite linear;
}
#pic2 {
-webkit-animation: pic2 4s infinite linear;
}
@-webkit-keyframes pic1 {
0% {opacity: 0;}
5% {opacity: 1;}
45% {opacity: 1;}
50% {opacity: 0;}
100% {opacity: 0;}
}
@-webkit-keyframes pic2 {
0% {opacity: 0;}
50% {opacity: 0;}
55% {opacity: 1;}
95% {opacity: 1;}
100% {opacity: 0;}
}
</style>
<script type="text/javascript">
function doStuff(){
var pic1 = document.getElementById("pic1");
var pic2 = document.getElementById("pic2");
pic1.style.webkitAnimationPlayState="paused";
pic2.style.webkitAnimationPlayState="paused";
pic1.onclick = function(){
pic1.style.webkitAnimationPlayState="running";
pic2.style.webkitAnimationPlayState="running";
}
pic2.onclick = function(){
pic1.style.webkitAnimationPlayState="running";
pic2.style.webkitAnimationPlayState="running";
}
}
</script>
</head>
<body>
<img id="pic1" class="pic" src="photo1.jpg" />
<img id="pic2" class="pic" src="photo2.jpg" onclick="doStuff()" />
</body>
</html>
我不想使用任何JS库(例如jQuery)或其他外部解决方案。
我猜测在doStuff
函数内的函数仍在运行,这就是为什么pause
和resume
只能工作一次的原因。
有没有办法在点击一次后清除这些函数?或者我是完全错误地尝试做这个?感谢您的帮助。:)
!important
。CSS 遵循特定性规则,规则越具体,属性就越突出。animation-play-state: paused !important;
可以解决这个“问题”(这是 CSS 的设计原则,但在这里却成了问题)。这可能对 Luis 有效,因为他进行了简单的测试或者没有出现特定性“冲突”。 - Regular Jo