zoukankan      html  css  js  c++  java
  • 以鼠标位置为中心

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>以鼠标位置为中心的滑轮放大功能demo</title>
    <style type="text/css">
    html, body {
        height: 100%;
        overflow: hidden;
    }
    body {
        margin: 0;
        padding: 0;
    }
    </style>
    <script type="text/javascript" src="js/jquery-2.1.1.min.js" ></script>
    <script type="text/javascript">
    /*绑定事件*/
    function addEvent(obj, sType, fn) {
        if (obj.addEventListener) {
            obj.addEventListener(sType, fn, false);
        } else {
            obj.attachEvent('on' + sType, fn);
        }
    };
    function removeEvent(obj, sType, fn) {
        if (obj.removeEventListener) {
            obj.removeEventListener(sType, fn, false);
        } else {
            obj.detachEvent('on' + sType, fn);
        }
    };
    function prEvent(ev) {
        var oEvent = ev || window.event;
        if (oEvent.preventDefault) {
            oEvent.preventDefault();
        }
        return oEvent;
    }
    /*添加滑轮事件*/
    function addWheelEvent(obj, callback) {
        if (window.navigator.userAgent.toLowerCase().indexOf('firefox') != -1) {
            addEvent(obj, 'DOMMouseScroll', wheel);
        } else {
            addEvent(obj, 'mousewheel', wheel);
        }
        function wheel(ev) {
            var oEvent = prEvent(ev),
            delta = oEvent.detail ? oEvent.detail > 0 : oEvent.wheelDelta < 0;
            callback && callback.call(oEvent, delta);
            return false;
        }
    };
    /*页面载入后*/
    window.onload = function() {
        var oImg = document.getElementById('oImg');
        /*拖拽功能*/
        (function() {
            addEvent(oImg, 'mousedown', function(ev) {
                var oEvent = prEvent(ev),
                disX = oEvent.clientX - oImg.offsetLeft,
                disY = oEvent.clientY - oImg.offsetTop,
                startMove = function(ev) {
                    var oEvent = ev || window.event,
                    l = oEvent.clientX - disX,
                    t = oEvent.clientY - disY;
                    oImg.style.left = l +'px';
                    oImg.style.top = t +'px';
                    
                }, endMove = function(ev) {
                    removeEvent(document, 'mousemove', startMove);
                    removeEvent(document, 'mouseup', endMove);
                };
                addEvent(document, 'mousemove', startMove);
                addEvent(document, 'mouseup', endMove);
                return false;
            });
        })();
        
        
        
        /*以鼠标位置为中心的滑轮放大功能*/
        (function() {
            var initW = oImg.offsetLeft
            ,initH = oImg.offsetHeight;
            addWheelEvent(oImg, function(delta) {
                if(delta && +(oImg.offsetWidth/initW).toFixed(1)<0.5){return}
                if(!delta && +(oImg.offsetWidth/initW).toFixed(1) > 5){return;}
                var ratioL = (this.clientX - oImg.offsetLeft) / oImg.offsetWidth,
                ratioT = (this.clientY - oImg.offsetTop) / oImg.offsetHeight;
                scale = !delta ? 1 + 0.1 : 1 - 0.1;
                var w = parseInt(oImg.offsetWidth * scale),
                h = parseInt(oImg.offsetHeight * scale),
                l = Math.round(this.clientX - (w * ratioL)),
                t = Math.round(this.clientY - (h * ratioT));
                 $(oImg).css({
                    'width':w+'px'
                    ,'height':h+'px'
                    ,'left':l+'px'
                    ,'top':t+'px'
                   })
            });
        })();
    };
    
    /**
     * ele.offsetLeft:获取的永远都是相对于最近的已定位的祖先元素的position属性值
     * 如果img对象有 translate(-50%,-50%)值
     * 那么 , 图片距离最近的已定位的祖先实际距离  = 距离祖先元素偏移量 - 自身宽度的一半
     * oImg.offsetLeft - parseInt(oImg.offsetWidth/2)
     * */
    </script>
    </head>
    <body>
        <div style="height: 100%;">
            <img src="img/natural2.jpg" id="oImg" width="600" style="position: relative;left: 50%;top:50%;transform: translate(-50%,-50%);display: block;height: 600px;">
        </div>
    </body>
    </html>

  • 相关阅读:
    iOS 两个App之间调起通信
    iOS图片压缩处理
    c# XML和实体类之间相互转换(序列化和反序列化)
    asp代码获取年数,季度数.星期数,天数,小时数,分钟数,秒数等时
    C# 响应微信发送的Token验证,文字、图文自动回复、请求客服对话.....
    sql server2008 R2打开报错:无法识别的配置节 system.serviceModel解决办法分享
    html5/css3响应式布局介绍及设计流程
    C#从入门到精通视频教程(2009年最新) 视频列表
    视频播放flv player的使用
    ASP中DateDiff函数详解
  • 原文地址:https://www.cnblogs.com/littleboyck/p/11990628.html
Copyright © 2011-2022 走看看