更好的中心缩放图像的方法?

时间:2012-02-05 07:31:23

标签: jquery zoom

我将一个小的jquery函数放在一起,在鼠标悬停时放大和缩小图像,同时保持约束框大小不变。

在此演示:http://jsfiddle.net/q9jHu/

效果很好,但是如果你在图像之间快速摆动光标,就会变得混乱。在中间缩放时,脚本会错误地存储大小。我已经尝试将.stop()添加到等式中,但似乎无法修复故障。

我猜我应该用.each()而不是鼠标悬停来存储数据,但我不知道如何做到这一点。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

看这里 http://jsfiddle.net/q9jHu/4/

$('.pixbox img').on({
    mouseover: function(){
        var $scale = 1.5;
        if (!$(this).data('w'))
        {
            $(this).data('w', $(this).width())
                   .data('h', $(this).height());
        }
        $(this).stop(true).animate({
            width:  $(this).data('w')*$scale,
            height: $(this).data('h')*$scale,
            left: -$(this).data('w')*($scale - 1)/2,
            top:  -$(this).data('h')*($scale - 1)/2
        }, 'fast');
    },
    mouseout: function(){
        $(this).stop(true).animate({
            width:  $(this).data('w'),
            height: $(this).data('h'),
            left: 0,
            top: 0
        }, 'fast');
    }
});

答案 1 :(得分:0)

最简单的就是改变

var $w = $(this).width();
var $h = $(this).height();

var $w = 120;
var $h = 180;

//静态值

但是,爽快的解决方案是最佳的