鼠标滚动事件



<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
        function enclose(content,framewidth,frameheight,contentX,contentY){
            framewidth=Math.max(framewidth,50) ;
            frameheight=Math.max(frameheight,50);

            contentX=Math.min(contentX,0) || 0;
            contentY=Math.min(contentY,0) || 0;

            var frame=document.createElement("div");
            frame.className="enclosure";
            frame.style.width=framewidth+"px";
            frame.style.height=frameheight+"px";
            frame.style.overflow="hidden";
            frame.style.boxSizing="border-box";
            frame.style.webkitBoxSizing="border-box";
            frame.style.mozBoxSizing="border-box";
            content.parentNode.insertBefore(frame,content);
            frame.appendChild(content);

            content.style.position="relative";
            content.style.left=contentX +"px";
            content.style.top=contentY+"px";

            var isMacWebkit=(navigator.userAgent.indexOf("Macintosh") !== -1 && navigator.userAgent.indexOf("WebKit") !== -1);
            var isFirefox=(navigator.userAgent.indexOf("Gecko") !== -1);

            frame.οnwheel=wheelHandler;
            frame.onmousewheel=wheelHandler;
            if(isFirefox) frame.addEventListener("DOMMouseScroll",wheelHandler,false);

            function wheelHandler(event){
                var e=event || window.event;

                var deltaX= e.deltaX * -30 || e.wheelDeltaX /4 || 0;
                var deltaY= e.deltaY * -30 || e.wheelDeltaY/4  || (e.wheelDeltaY===undefined && e.wheelDelta/4) || e.detail * -10 || 0;

                if(isMacWebkit){
                    deltaX /= 30;
                    deltaY /= 30;

                }

                if(isFirefox && e.type !=="DOMMouseScroll"){
                    frame.removeEventListener("DOMMouseScroll",wheelHandler,false);
                }

                var contentbox=content.getBoundingClientRect();
                var contentwidth=contentbox.right-contentbox.left;
                var contentheight=contentbox.bottom-contentbox.top;

                if(e.altKey){
                    if(deltaY){
                        frameheight -= deltaY;
                        frameheight=Math.min(frameheight,200);
                        frameheight=Math.max(frameheight,50);
                        frame.style.height=frameheight+"px";
                    }
                }else{

                    /*
                    if(deltaX){
                        var minoffset=Math.min(frameheight-contentwidth,0);
                        contentX=Math.max(contentX+deltaX,minoffset);
                        contentX=Math.min(contentX,0);
                        content.style.left=contentX +"px";
                    } */

                    if(deltaY){
                       // var minoffset=Math.min(frameheight-contentheight,0);
                        contentY=contentY-deltaY;
                        contentY=Math.min(contentY,0);
                        contentY=Math.max(contentY,-300);

                        content.style.top=contentY+"px";
                    }
                }
                if(e.preventDefault) e.preventDefault();
                if(e.stopPropagation) e.stopPropagation();
                e.cancelBubble=true;
                e.returnValue=false;
                return false;

            }

        }
        function execit(){
            enclose(document.getElementById("content"),400,200,-200,-300)
        }
    </script>
    <style>
        div.enclosure{border:solid 1px black 10px;margin:10px;background-color:orange;}
    </style>
</head>
<body οnlοad="execit();">
<div style="height:100px"></div>
<img id="content" src="testimage.jpg" />
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值