【发布时间】:2019-06-18 10:49:50
【问题描述】:
我在这里有一个相当简单的小提琴:http://jsfiddle.net/7aotzqmL/2/,它应该在单击链接时用 CSS 动画摇动 div。它有效,但只有每隔一次(每隔一次)。我很难过 - 有人可以帮忙吗?
我看过的其他答案提到了如何在使用 onmouseover 时还需要附加 onmouseout ......但这只是一次点击,所以我不确定这是否相关。我只想让 div 在每次点击时都摇晃一下,而不是其他的。
jsFiddle:https://jsfiddle.net/7aotzqmL/2/
CSS 代码:
$(function() {
$('a').click(function(ev) {
$('div').toggleClass('shaker');
ev.preventDefault();
});
});
div.shaker {
animation: shake 0.3s;
/* When the animation is finished, start again */
animation-iteration-count: 1; //single shake
}
@keyframes shake {
0% {
transform: translate(1px, 1px) rotate(0deg);
}
10% {
transform: translate(-1px, -2px) rotate(-1deg);
}
20% {
transform: translate(-3px, 0px) rotate(1deg);
}
30% {
transform: translate(3px, 2px) rotate(0deg);
}
40% {
transform: translate(1px, -1px) rotate(1deg);
}
50% {
transform: translate(-1px, 2px) rotate(-1deg);
}
60% {
transform: translate(-3px, 1px) rotate(0deg);
}
70% {
transform: translate(3px, 1px) rotate(-1deg);
}
80% {
transform: translate(-1px, -1px) rotate(1deg);
}
90% {
transform: translate(1px, 2px) rotate(0deg);
}
100% {
transform: translate(1px, -2px) rotate(-1deg);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#">asd</a>
<div>shake</div>
【问题讨论】:
-
在我看来,问题在于我的 div 类“shaker”被第二次点击删除了,因为这是对 toggleClass 的第二次调用。这将解释每 2 次工作。但是,当我在调用 toggleClass 之前添加检查时:
if ($('div').hasClass('shaker')) { $('div').removeClass('shaker'); }它仍然不起作用。有人吗?
标签: javascript jquery css shake