鼠标滚动时放大和缩小图像

Vic*_*cky 5 html javascript ajax mousewheel zooming

我想在 HTML 中的鼠标滚动时放大和缩小图像。有多个img标签没有ID. 那么我如何使用 JavaScript 或 Ajax 来实现呢?

小智 4

只是把答案抛给那些会寻找这个问题答案的人。

首先,您需要找到一个系统来检测鼠标滚动。如果你有勇气,你可以自己开发。如果你不是,你可以找到一些非常好的库(例如:带有 JQuery 的 MouseWheel)。

接下来,您将找到另外两种放大和缩小的方法。

简单的方法

首先,我们来作弊一下。当您需要缩放时,只需将图像的高度和宽度乘以您决定的系数即可。将高度和宽度放入变量中 (JQuery)

var height = $('#image').height();
var width = $('#image').width();
Run Code Online (Sandbox Code Playgroud)

对于您收到的每个卷轴,您只有 2 个选择。一旦你能够知道鼠标滚轮是向上还是向下,你只需要做这样的事情(JQuery)

height *= 2;
width *= 2;
Run Code Online (Sandbox Code Playgroud)

这样,通过将图像尺寸加倍,您就会产生放大的感觉。

不太简单的方法

如果您想像在 GMap 对象中那样放大,您可以执行类似的操作。

var firstHeight = $('#image').height();

height *= 2;
width *= 2;

scalechange = (actualHeight / firstHeight) - 1;
offsetX = -(coordX * scalechange);
offsetY = -(coordY * scalechange);

$("#image").css('top', offsetY + 'px');
$("#image").css('left', offsetX + 'px');
Run Code Online (Sandbox Code Playgroud)

首先,您必须拥有图像的第一高度。接下来,您将图像的大小加倍(缩放效果)。下一步是计算尺度变化。你将能够找到多种解释和多种计算方法,我的方法和其他方法一样好。显示的两个偏移量是图像将采用的新位置(简单的因子计算,就像价格的 x%)。最后一部分是设置图像的新值。

最后,您将能够使用 ou 进行缩放和取消缩放,而无需将图像置于鼠标位置的中心。

注意:上面的计算只是为了放大。您必须做一些数学运算才能缩小!

更进一步?

另一种更进一步的方法是将图像放置在 div 中。

<div id="imageContainer" style="overflow:hidden;">
    <img id="image" src="YourImage">
</div>
Run Code Online (Sandbox Code Playgroud)

通过设置

"overflow:hidden;" 
Run Code Online (Sandbox Code Playgroud)

到你的div,你的图像将会缩放。但所有超出 div 的内容都将被隐藏。如果将 div 设置为图像的原始大小,如下所示(JQuery)

$("#imageContainer").css('height', $('#image').height());
$("#imageContainer").css('width', $('#image').width());
Run Code Online (Sandbox Code Playgroud)

然后您将看到一个始终具有相同尺寸的图像,但您的缩放将有效。如果将其与拖放方法结合起来,您将拥有一个类似 GMap 对象的对象(放大缩小、移动缩放图像……)

希望它能帮助别人!