如何在HTML5页面中使用鼠标滚轮事件

支持鼠标滚轮可以为HTML5网页增加更多的交互性。 除了滚动页面,您还可以执行其他操作,例如放大或缩小。

查看鼠标滚轮演示页面…

大多数浏览器支持任何元素的“ mousewheel”事件。 您可以注册传递事件对象的处理函数。 这暴露了wheelDelta属性; 向上滚动为正值或向下滚动为负值。 值越大或越小,移动越大。

不幸的是,有一个浏览器不支持“ mousewheel”事件。 您错了: 是Firefox 。 Mozilla已实现“ DOMMouseScroll”事件。 这将传递具有detail属性的事件对象,但是与wheelDelta不同,它返回用于向下滚动的正值。 因此,直到Mozilla采纳该活动,我们才有一个奇怪的情况,那就是为IE6编写代码实际上要容易一些! 那不是你每天听到的话。

您还应该注意,Apple在Safari中禁用了滚轮,但是Webkit引擎提供了支持,因此您的代码不会引起任何问题。

添加鼠标滚轮事件处理程序

让我们向网页添加一个图像,该图像将根据鼠标滚轮进行放大和缩小:


<img id="myimage" src="myimage.jpg" alt="my image" />

现在,我们可以附加mousewheel事件处理程序:


var myimage = document.getElementById("myimage");
if (myimage.addEventListener) {
	// IE9, Chrome, Safari, Opera
	myimage.addEventListener("mousewheel", MouseWheelHandler, false);
	// Firefox
	myimage.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
}
// IE 6/7/8
else myimage.attachEvent("onmousewheel", MouseWheelHandler);

跨浏览器鼠标滚轮事件处理功能

现在,我们的MouseWheelHandler可以确定滚轮运动增量。 在这种情况下,我们将反转Firefox的detail值,并返回1(向上)或-1(向下):


function MouseWheelHandler(e) {

	// cross-browser wheel delta
	var e = window.event || e; // old IE support
	var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

现在我们可以相应地调整图像的大小。 下面的代码将宽度设置为50像素到800像素之间,但是您可以确定图像的自然尺寸并使用它。


	myimage.style.width = Math.max(50, Math.min(800, myimage.width + (30 * delta))) + "px";

	return false;
}

最后,我们返回false来取消通常会滚动页面的标准事件。

查看鼠标滚轮演示页面…

该代码可在包括IE6、7和8在内的所有浏览器中使用,但Safari用户将看不到任何情况。

如果您喜欢阅读这篇文章,那么您会喜欢Learnable的 向大师学习新鲜技能的地方。 会员可以立即访问所有SitePoint的电子书和交互式在线课程,例如针对真实世界的HTML5和CSS3

本文的评论已关闭。 对HTML有疑问吗? 为什么不在我们的论坛上提问呢?

From: https://www.sitepoint.com/html5-javascript-mouse-wheel/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值