同时动画和添加类

时间:2012-07-27 22:11:50

标签: javascript jquery css jquery-animate

我正在尝试为动画添加具有topleft属性的类,但div只是转移到添加的类属性而没有动画。

#myClass.move {
    top:100px;
    left:100px; 
}     

目标是在添加类时动画发生,并根据添加的类的属性设置动画。

var shiftTop = parseInt($(".move").css("top")); 
var shiftLeft = parseInt($(".move").css("left")); 

$("#myClass").addClass("move").animate({top: "-="+shiftTop, left: "-="+shiftLeft}, 1000, function() {});

这可能吗?

4 个答案:

答案 0 :(得分:3)

使用jQueryUI

Demo here

$("#myClass").click(function() {
    $(this).addClass("move", 1000);
});​

答案 1 :(得分:2)

$('#myClass').animate({top: "-="+shiftTop, left: "-="+shiftLeft}, 1000, function() {
    $(this).addClass('#myClass');
});

答案 2 :(得分:1)

是的,有可能:

在制作动画之前添加课程
$("#myClass").addClass("move").animate({top: "-="+shiftTop, left: "-="+shiftLeft}, 1000);
demo

动画后添加课程

$("#myClass").animate({top: "-="+shiftTop, left: "-="+shiftLeft}, 1000, function() {
    $(this).addClass('move');
});


demo

答案 3 :(得分:0)

我假设您的文档中已经有一个包含类.move的元素,可以从中读取shiftTopshiftLeft值。

如果您需要做的只是更改topleft属性,则可以完全删除addClass步骤,因为animate函数会将它们内联添加。如果您确实需要之后应用的课程,请在animate回调中执行此操作。

根据您的兼容性要求,您也可以使用transitions完全使用CSS。