鼠标滚轮事件练习

273 阅读1分钟

当鼠标滚轮向下滚动时,box1变长
当鼠标滚轮向上滚动时,box1变短

onmousewheel鼠标滚轮滚动的事件,会在滚轮滚动时触发,但是火狐不支持该属性
在火狐中需要使用DOMMouseScroll来绑定滚动事件注意该事件需要通过addEventListener() 函数来绑定

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			body{
				height: 2000px;
			}
			#box1{
				width: 100px;
				height: 100px;
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div id="box1"></div>
	</body>
	<script>
			function bind(obj,evenStr,callback){
			if(obj.addEventListener){
				//大部分浏览器兼容的方式
				obj.addEventListener(evenStr,callback,false);
			}else{
				//通过callback.call(obj) 可改变this的调用方式
				//IE8及以下浏览器
				obj.attachEvent("on"+evenStr,function(){
					//在匿名函数中调用回调函数
					callback.call(obj);
				});
			}
		}
		var box1=document.getElementById("box1");
		//为box1绑定一个鼠标滚轮滚动的事件
		box1.onmousewheel=function(event){
			event=event || window.event;
			//判断鼠标滚轮滚动的方向
			//event.wheelDelta 可以获取鼠标滚轮滚动的方向
			//向上滚正值,向下滚负值
			//alert(event.wheelDelta);
			//event.wheelDelta 火狐不支持
			//在火狐中使用event.detail来获取滚轮滚动的方向
			//向上滚负值,向上滚正值
			//alert(event.detail);
			
			//判断鼠标滚轮滚动的方向
			if(event.wheelDelta>0 || event.detail<0){
				//向上滚,box1变短
				box1.style.height=box1.clientHeight-10+"px";
			}else{
				//向下滚,box1变长
				box1.style.height=box1.clientHeight+10+"px";
			}
			//使用addEventListener()方法绑定响应函数,取消默认行为时不能使用return false
			//需要使用event来取消默认行为event.preventDefault( );
			//但是IE8不支持event.preventDefault();
			event.preventDefault && event.preventDefault();
			//当滚轮滚动时,如果浏览器有滚动条,滚动条会随之滚动,这是浏览器的默认行为,如果不希望发生,则可以取消默认行为
			return false;
		};
		//为火狐浏览器绑定滚轮事件
		bind(box1,"DOMMouseScroll",box1.onmousewheel);
	</script>
</html>