javascript - JQuery 无法在 "forwards"css 动画后对 div 进行动画处理

标签 javascript jquery html css animation

查看示例 http://jsfiddle.net/nxsv5dgw/

Div 出现在舞台上,其上出现“向前”动画,JQuery 显然无法再对动画属性进行“动画”处理。

在该示例中,CSS 动画在框的宽度上播放。 OnClick 时,JQuery 动画尝试缩小框的宽度和高度,但仅更改高度。这是代码。

$(".a").click(function(e) {
  $(this).animate({
    width: "-=100px", // doesn't work after CSS animation
    height: "-=100px",
  }, 400); 
})

.a {
  background:red;
  position:absolute;
  height:500px;
  width:600px;
  animation: anim 0.4s forwards 1s;
}

@keyframes anim {
  0% {width:600px;}
  100% {width:500px;}
}

有什么办法可以避免这个问题吗?如果可能的话,我宁愿避免在 JQuery 中执行所有动画。

最佳答案

仅针对 Firefox 进行了测试,但可以正常工作 - 我已经调整了您的 Fiddle添加

$(this).css({
    "width": $(this).width(),
    "animation": "none"
});

到点击功能。这将宽度设置为实际宽度并覆盖动画,但我认为可能有更好的解决方案,因为它看起来像一个黑客。

更新 - 也适用于 Safari 和 IE。

关于javascript - JQuery 无法在 "forwards"css 动画后对 div 进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27642278/

相关文章:

javascript - 在 Javascript 中访问 SVG DOM : object tag vs XMLSerializer?

javascript - 无法在 jQuery 中使用 $this

javascript - Protractor 如何使用 npm 属性读取器从属性文件中调用具有多个套件值的键

javascript - 我可以像 flow 一样使用 typescript 可选吗?

javascript - JQGRID ,过滤后得到所有行

html - Div 内的 Div - 位于顶部

html - 为什么使用此 HTML 代码时右边距没有对齐?

html - CSS DIV 容器 100% 宽度,最小宽度 100%(覆盖全屏)

javascript - Jquery ajax 调用超时。

javascript - D3js SVG 重叠 : Custom Colors with Many SVGs of random shape