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

发布于 2025-01-02 04:24:11 字数 334 浏览 0 评论 0原文

我组合了一个 jquery 函数,用于在鼠标悬停时放大和缩小图像,同时保持约束框大小不变。

在这里演示: http://jsfiddle.net/q9jHu/

它效果很好,但是如果你摇动光标图像之间很快就会变得混乱。处于中间缩放状态时,脚本存储的尺寸不正确。我尝试将 .stop() 添加到方程中,但似乎无法修复该故障。

我猜我应该用 .each() 存储数据,而不是在鼠标悬停时存储数据,但我不知道该怎么做。

有什么想法吗?

I put together a little jquery function to zoom in and out of an image on mouseover, while keeping the constraining box size constant.

Demo it here: http://jsfiddle.net/q9jHu/

It works great, but if you jiggle the cursor quickly between the images, it goes haywire. The script stores the size incorrectly when in mid-zoom. I've tried adding .stop() to the equation, but can't seem to fix the glitch.

I'm guessing I should store the data with .each() instead of on mouseover, but I don't know how to do this.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那片花海 2025-01-09 04:24:11

看这里
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');
    }
});

Look here
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');
    }
});
撩动你心 2025-01-09 04:24:11

最简单的就是改为

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

//

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

static value

但cheery的解决方案是最优的

Simplest one is to change

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

to

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

// static value

But cheery's solution is optimal

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文