javascript放大镜功能

先把原理说一下:首先是两张内容相同的图片a和b,图片a作为原图,图片b作为放大的效果图。

当鼠标在图片a上经过时,按照固定大小截取图片b显示出来。截取的方法很简单,用style的left和top属性就好了。

<html>

<head>
<style type="text/css">
    .zoomPan{width:800px;left:100px;position:relative; }
    .sh{zoom:1;background:#eee;filter:progid:DXImageTransform.Microsoft.dropShadow(color='#54000000', OffX=2,OffY=2);-webkit-box-shadow:4px 4px 4px #666;-moz-box-shadow:4px 4px 4px #666;}
    #zoom{position:absolute;width:254px;height:254px;border:3px solid #fff;left:-9999px;top:0;overflow:hidden;background:#fff;}
    #zoom img{position:relative;}
</style>
</head>
<body>
    <div class="zoomPan" id="zoomPan">
        <img id="productimage" src="http_imgload.jpg" alt=""  />
        <div id="zoom" class="sh">
            <img id="zoomimg" src="http_imgload.jpg" alt="" />
        </div>
    </div>
<!--
    <div id="jqzoom" style="width:800px;height:663px;">
        <img id="productimage" src="http_imgload.jpg" alt="" />
    </div>
    <div id="zoom" style="display:none;width:200px;height:200px;overflow:hidden;position:absolute;">
        <img id="zoomimg" src="http_imgload.jpg" alt="" />
    </div>
    <script>
        function zoomBox() {this.index.apply(this, arguments)}
        zoomBox.prototype = {
            index: function(win,zoom) {
                var win=document.getElementById(win);
                var box=document.getElementById(zoom);
                var img=box.getElementsByTagName('IMG')[0];
                var zoom=img.width/win.getElementsByTagName('IMG')[0].width;
                win.οnmοusemοve=function (e){
                    e = e || window.event;
                    var x=e.clientX,y=e.clientY, ori=win.getBoundingClientRect();
                    if (x>ori.right+20||y>ori.bottom+20||x<ori.left-20||y<ori.top-20)box.style.display='none';
                    x-=ori.left;
                    y-=ori.top;
                    box.style.left=x+150+'px';
                    box.style.top=y+50+'px';
                    img.style.left=-x*zoom+'px';
                    img.style.top=-y*zoom+'px';
                }
                win.οnmοuseοver=function (){box.style.display=''}
            }
        };
        window.οnlοad=function (){
            document.getElementById("zoomimg").style.width = document.getElementById("productimage").clientWidth * 1.5 + 'px';
            document.getElementById("zoomimg").style.height = document.getElementById("productimage").clientHeight * 1.5 + 'px';
            x=new zoomBox('jqzoom','zoom')
        }
    </script>
-->

</body>
<script type="text/javascript">
    function zoomBox() {this.index.apply(this, arguments)}
    zoomBox.prototype = {
        index: function(win,zoom) {
            var win=document.getElementById(win);
            var box=document.getElementById(zoom);
            var img=box.getElementsByTagName('IMG')[0];
            var zoom=img.width/win.getElementsByTagName('IMG')[0].width;
            //var z=Math.round(box.offsetWidth/2);
            win.οnmοusemοve=function (e){
                e = e || window.event;
                var x=e.clientX,y=e.clientY, ori=win.getBoundingClientRect();
                if (x>ori.right+20||y>ori.bottom+20||x<ori.left-20||y<ori.top-20)box.style.display='none';
                x-=ori.left;
                y-=ori.top;
                box.style.left=x+'px';
                box.style.top=y+'px';
                img.style.left=-x*zoom+'px';
                img.style.top=-y*zoom+'px';
            }
            win.οnmοuseοver=function (){box.style.display=''}
        }
    };
    window.οnlοad=function (){
        document.getElementById("zoomimg").style.width = document.getElementById("productimage").clientWidth * 1.2 + 'px';
        document.getElementById("zoomimg").style.height = document.getElementById("productimage").clientHeight * 1.2 + 'px';
        x=new zoomBox('zoomPan','zoom')
    }
</script>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值