码迷,mamicode.com
首页 > Web开发 > 详细

js放大镜效果

时间:2014-12-29 21:12:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

<!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="images/b1.jpg" />
        </div>
    </div>
</body>
</html>

 

js放大镜效果

标签:

原文地址:http://www.cnblogs.com/heboliufengjie/p/4192362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!