首页 > 代码库 > js放大镜效果

js放大镜效果

<!doctype html><html><head><meta charset="utf-8"><meta name="author" content="智能社 - zhinengshe.com"><meta name="copyright" content="智能社 - zhinengshe.com"><title>智能社 - www.zhinengshe.com</title><style>* { margin:0; padding:0; }.box { margin-left:100px; margin-top:50px; }#div1 { position:relative; float:left; width:310px; height:310px; border:1px solid red; background:url(images/m1.jpg) no-repeat; }#div1 span { display:none; position:absolute; top:0; left:0; width:100px; height:100px; background:yellow; opacity:0.6; filter:alpha(opacity:60); cursor:move;}#div2 { display:none; position:relative; float:left; overflow:hidden; width:310px; height:310px; border:1px solid green; margin-left:20px;}#div2 img { position:absolute; top:0; left:0; }</style><script>window.onload=function (){    var oDiv1=document.getElementById(div1);    var oDiv2=document.getElementById(div2);    var oSpan=oDiv1.children[0];    var oImg=oDiv2.children[0];    oDiv1.onmouseover=function(ev)    {        oDiv2.style.display=block;        oSpan.style.display=block;        show(ev);            };    oDiv1.onmouseout=function (){        oDiv2.style.display=none;        oSpan.style.display=none;    };        oDiv1.onmousemove=function (ev){        show(ev);    //onmousemove    鼠标移动时候触发,不要放太浪费性能的东西    };    function show(ev)    {        var oEvent=ev||event;                var x=oEvent.clientX;        var y=oEvent.clientY;        var l=x-oDiv1.offsetLeft-oSpan.offsetWidth/2;        var t=y-oDiv1.offsetTop-oSpan.offsetHeight/2;        if (t<0)        {            t=0;        }        if (t>oDiv1.offsetHeight-oSpan.offsetHeight)        {            t=oDiv1.offsetHeight-oSpan.offsetHeight-2;//在ie6下回出现覆盖边框情况,保证在范围内        }                if (l<0)        {            l=0;        }                if (l>oDiv1.offsetWidth-oSpan.offsetWidth)        {            l=oDiv1.offsetWidth-oSpan.offsetWidth-2;//在ie6下回出现覆盖边框情况,保证在范围内        }        oSpan.style.left=l+px;        oSpan.style.top=t+px;        // 大img位置计算        oImg.style.left=-l/(oDiv1.offsetWidth-oSpan.offsetWidth)*(oImg.offsetWidth-oDiv2.offsetWidth)+px;        oImg.style.top=-t/(oDiv1.offsetHeight-oSpan.offsetHeight)*(oImg.offsetHeight-oDiv2.offsetHeight)+px;    };    };</script></head><body>    <div class="box">        <div id="div1">            <span></span>        </div>                <div id="div2">            <img src=http://www.mamicode.com/"images/b1.jpg" />        </div>    </div></body></html>

 

js放大镜效果