如何使这种震动效果表现?

时间:2012-01-16 16:27:18

标签: javascript jquery plugins jquery-animate

我有以下代码:

jQuery.fn.shake = function(intShakes, intDistance, intDuration) {
    this.each(function() {
        $(this).css("position","relative"); 
        for (var x=1; x<=intShakes; x++) {
        $(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
         .animate({left:intDistance}, ((intDuration/intShakes)/2))
         .animate({left:0}, (((intDuration/intShakes)/4)));
        }
    });
return this;
};

问题在于,当我应用它时,如果对象绝对位于中心,则会使对象跳转到页面的左侧。

这可以修复吗?以及如果可以?

2 个答案:

答案 0 :(得分:3)

我认为在你的动画风格中使用“margin-left”而不是“left”会有更好的效果。如果第一次不能正常工作,您可能需要使用相对定位等

答案 1 :(得分:1)

您正在设置$(this).css("position","relative");。通过设置position: relative,您可以将元素移回文档流中的任何位置,然后将其相对于该位置进行定位。

对于绝对定位的元素,您需要保持它们的绝对值并根据当前位置计算移动。