令我惊讶的是,在基于 jQuery 的 CSS 属性更改之后通过 jQuery 应用的 CSS3 转换规则实际上会为该属性更改设置动画。请查看http://jsfiddle.net/zwatf/3/:
最初,一个 div 由两个类设置样式,并且由于这两个类的默认 CSS 属性而具有一定的高度(200px)。然后使用 jQuery 通过删除一个类来修改高度:
$('.container').removeClass('active');
这会将高度从 200 像素降低到 15 像素。
之后,通过添加一个类将转换规则应用于容器:
$('.container').addClass('all-transition');
正在发生的事情是高度的减少变成了动画(至少在 Firefox 和 Chrome 上)。在我的世界里,如果指令的顺序有任何意义,这不应该发生。
我想这种行为可以很好地解释。为什么会这样?我该如何预防?
这就是我想要实现的目标:
- 使用 jQuery 修改默认样式(不是由 CSS3 过渡动画!)
- 使用 jQuery 应用转换规则
- 使用 jQuery 更改属性(由 CSS3 过渡动画)
(1) 和 (2) 应该尽快发生,所以我不喜欢随意拖延。