使用jquery animate方法缩放图像

时间:2013-05-29 07:39:13

标签: jquery image-scaling

我想使用jquery作为css3转换来缩放图像。 所以我在这里写了一个脚本

 (function(){
    $('.img_container img').on('mouseover',function(){
        var $this = $(this),
            width = $this.attr('width'),
            height = $this.attr('height'),
            new_width = (width + 10)+'px',
            new_height = (height + 10)+'px';

        $this.animate({'width':new_width,
                       'height':new_height,
                       'top':'-10px',
                       'left':'-10px'},{
                           duration:300,
                           });
        });
    })();

鼠标悬停在图像上会增加宽度和高度超过10px并且异常 任何帮助,请

我能写另一个剧本。

(function(){
    var factor = 15;

$('.img_container img').on('mouseover',function(){

        var $this = $(this),
        height = $this.height(),
        width = $this.width();
    $(this).animate({
        top:  height - factor,
        left:  width - factor,
        width: width + factor,
        height: height +factor
    },200);
});
$('.img_container img').on('mouseleave',function(){

        var $this = $(this),
        height = $this.height(),
        width = $this.width();
    $(this).animate({
        top:  height + factor,
        left:  width + factor,
        width: width - factor,
        height: height - factor
    },200);
});

})();

但是,如果我将鼠标移入和移出图像几次 非常快,图像将“悸动”,因为它捕获每个事件和 无法足够快地展示它们。这就像延迟动画。如何解决这个问题。

3 个答案:

答案 0 :(得分:3)

var factor = 2;

$('.img_container img').on('mouseover',function(){
    $(this).animate({
        top: '-=' + $(this).height() / factor,
        left: '-=' + $(this).width() / factor,
        width: $(this).width() * factor
    });
});

有关具体因素,请参阅此Fiddle

答案 1 :(得分:0)

我的第一个猜测是使用

$(this).animate

而不是

$this.animate

答案 2 :(得分:0)

(function(){
    $('.img_container img').on('mouseover',function(){
       var
            width =  $(this).css('width'),
            height =  $(this).css('height'),
            new_width = (width + 10)+'px',
            new_height = (height + 10)+'px';

        $(this).animate({'width':new_width,
                       'height':new_height,
                       'top':'-10px',
                       'left':'-10px'},{
                           duration:300,
                           });
        });
    })();