jquery - 如何用 jQuery 触发 CSS3 缩放(动画)?

标签 jquery css-transitions css-animations

我想要实现的是对 Action 的脉动效果(例如单击按钮)。所以我所做的是这个(简化的[删除浏览器细节]):

@keyframes pulse {
  0% {transform: scale(1);}
  50% {transform: scale(1.02);}
  100% {transform: scale(1);}
}

.pulsate{
  animation-name: pulse 0.2s linear 2;
}

在 jQuery 中我这样做了:

$('#btn').click(function(e)){
    e.preventDefault();
    $('#some_element').addClass('pulse');
}

它工作正常,但只是第一次...一旦添加“pulse”类,它就不再触发...所以我尝试做的是:

$('#btn').click(function(e)){
    e.preventDefault();
    $('#some_element').removeClass('pulsate').addClass('pulsate');
}

它仍然不起作用......与此相反:

$('#btn').click(function(e){
    e.preventDefault();     
    $('#some_element').toggleClass('pulsate');
}

第一次有效,第二次无效,但第三次又有效;所以基本上每隔一段时间。

我很困惑。为什么它会以这种方式工作而不是删除并再次添加它?我什至尝试制作一个重置类(再次简化):

.reset_transform(){
    transform: none;
}

在 jQuery 中我正在做类似的事情:

$('#btn').click(function(e)){
  e.preventDefault();
  $('#some_element').removeClass('pulsate').addClass('reset_transform').addClass('pulsate');
}

但正如你所想象的那样,它不起作用......有什么想法吗?我希望每次单击按钮时该元素都会脉动。

最佳答案

这就是我的问题的解决方案。正如 @Aspiring Aqib 指出的那样,我需要在添加和删除类之间有一个延迟。他使用了delay() jquery,但它不起作用。

这是我使用 setTimeout() 的解决方案;

$('#some_element').addClass('pulsate');

setTimeout(function(){
   $('#some_element').removeClass('pulsate');
}, 800);

关于jquery - 如何用 jQuery 触发 CSS3 缩放(动画)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010665/

相关文章:

html - 在悬停过渡时创建 css3 模糊

css - 如何使图像连续旋转

使用关键帧的 CSS3 动画交替不触发

javascript - 根据数组中的值检查每个 div 的 id

css - Sass计算列宽百分比

javascript - 当尝试执行基于 ajax 的分页或过滤时,在部分 View 内呈现的 WebGrid 将引发 "“jQuery is not defined” "

CSS 变换动画崩溃

javascript - 我正在尝试使用 jquery 或 javascript 回调一个简单的动画

javascript - 使用 jquery 将文件上传到 Slack API files.upload

javascript - 如何使用 Html/Javascript 使用 OData 服务?