<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style> #div { width: 300px; height: 300px; background: red; } </style>
<script> function addEvent(obj,sEv,fn){ if(obj.addEventListener){ return obj.addEventListener(sEv,fn,false); }else{ return obj.attachEvent('on' + sEv,fn); } } function addWheel(obj,fn){ function wheel(ev){ var oEvent = ev || event; var bDown = true; bDown = oEvent.wheelDelta?oEvent.wheelDelta > 0:oEvent.detail < 0; fn && fn(bDown); oEvent.preventDefault && oEvent.preventDefault(); return false; }
------------------------------------------------------------------
return false阻止瀏覽器默認行為,遇到綁定添加的事件的時候就失效了;
所有要用oEvent.preventDefault();在使用此方法前要做判斷;
------------------------------------------------------------------ if(window.navigator.userAgent.indexOf('Firefox') !=-1){ obj.addEventListener('DOMMouseScroll',wheel,false);注:所有以DOM開頭的只能通過事件綁定的形式添加此事件; }else{ addEvent(obj,'mousewheel',wheel); } }
-------------------------------------------------------------------------------------------------
obj.onmousewheel:滾動鼠標滾輪的時候觸發;兼容IE系列和chrome;
DOMMouseScroll:只能通過事件綁定的形式添加此事件;只兼容FF;
兼容性問題解決方案:判斷瀏覽器;
oEvent.wheelDelta:不兼容FF;火狐下報undefined;
chrome&&IE:
下:-120;//以具體彈出數字為准
上:120;
oEvent.detail:
FF:
下:3;//以具體彈出數字為准
---------------------------------------------------------------------------------------------------
window.onload = function () {
var oDiv = document.getElementById('div');
addWheel(oDiv,function(bDown){
oDiv.onmousewheel = null;
if(bDown){
oDiv.style.height = oDiv.offsetHeight - 10 + 'px';
}else{
oDiv.style.height = oDiv.offsetHeight + 10 + 'px';
}
});
}
</script>
</head>
<body>
<div id="div"></div>
</body>
</html>
滾輪事件的兼容性問題比較多,所以大家在實現這個效果的時候也要隨時測試兼容性的問題。
暫時整理的大概就這些,還有很多不足的地方,大家多提寶貴意見!^_^