这段时间的都是讲事件的,所以今天再来讲一个鼠标滚轮的事件。
要实现的功能是:
* 当鼠标滚轮向下滚动时,box1变长
* 当鼠标滚轮向上滚动时,box1变短
废话少说,代码奉上:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box1{
width: 100px;
height: 100px;
background: red;
}
</style>
<script type="text/javascript">
window.onload = function(){
box1 = document.getElementById("box1");
//绑定滚轮事件
/*
* onmousewheel鼠标滚轮滚动事件,会在滚轮滚动时触发,但是火狐不兼容
* 在火狐中需要使用DOMMouseScroll来绑定滚轮事件
* 注意该事件需要addEventLister()来绑定
*
*/
box1.onmousewheel = function(event){
alert("滚了")
/*
* 当鼠标滚轮向下滚动时,box1变长
* 当鼠标滚轮向上滚动时,box1变短
* 判断鼠标滚轮滚动的方向
* event.wheelDelta 可以获取鼠标滚轮滚动的方向
* 向上滚120,向下滚-120
* wheelDelta火狐不支持,所以使用
* event.detail来获取滚动的方向
* 向上滚-3,向下滚3
*/
event = event || window.event;
if(event.wheelDelta>0 || event.detail<0){
box1.style.height = event.clientHeight - 10 +"px"
}else{
box1.style.height = event.clientHeight + 10 +"px"
}
/*
* 当滚轮滚动时,如果浏览器有滚动条,滚动条会随之滚动,
* 这是浏览器的默认行为,如果不希望发生,则可以取消默认行为。使用return false
* 但是addEventListener()方法绑定响应函数,取消默认行为不能使用return false,需要使用event来取消默认行为
* event.preventDefault();但是IE8不支持,不能直接调用。
*/
if(event.preventDefault){
event.preventDefault()
}
return false;
}
//为火狐绑定滚轮事件
bind(box1,'DOMMouseScroll',box1.onmousewheel)
function bind(obj,eventstr,callback){
if (obj.addEventListener){
obj.addEventListener(eventstr,callback,false)
}else{
obj.attachEvent('on'+eventstr,function(){
callback.call(obj);
})
}
}
}
</script>
</head>
<body>
<div id="box1"></div>
</body>
</html>