放大镜(商品浏览)

一般大家在浏览商城的时候都会有放大镜,下面是一个简单的样例分享给大家


图例:




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大镜</title>
    <style type="text/css">
        *{margin:0px;padding:0px;list-style:none;}
        #small{width:400px;height:400px;position:absolute;left:200px;top:20px;overflow:hidden;}
        #big{width:400px;height:400px;position:absolute;left:650px;top:20px;overflow:hidden;display:none;}
        #move{width:100px;height:100px;position:absolute;background:url(./bg.png);left:0px;top:0px;visibility:hidden/*display:none;*/}
        ul{width:300px;height:100px;position:absolute;top:450px;left:200px;}
        li{width:100px;height:100px;float:left;margin-right:10px;border:dashed 1px #444;padding:10px;}
    </style>
</head>
<body style="height:4000px;">
    <div id="small">
        <img src="Meinv014.jpg" alt="" width="100%" id="sImg">
        <div id="move"></div>
    </div>   
 
    <div id="big">
        <img src="Meinv014.jpg" alt="" style="position:absolute;" id="bImg">
    </div>
 
    <ul id="imgs">
        <li><img src="2.jpg" alt="" width="100%"></li>
        <li><img src="3.jpg" alt="" width="100%"></li>
    </ul>
    <script type="text/javascript">
    //获取元素
        var small = document.getElementById('small');
        var big = document.getElementById('big');
        var move = document.getElementById('move');
        var bImg = document.getElementById('bImg');
        var sImg = document.getElementById('sImg');
 
    //给小图div绑定鼠标移动事件
        small.onmousemove = function(e){
            //修改鼠标的样式
            small.style.cursor = "move";
            big.style.display  ="block";
            move.style.visibility = "visible";
 
            //获取鼠标的位置
            var x = e.pageX;//获取当前鼠标相对于文档的偏移量
            var y = e.pageY;
 
            //获取小div距离左侧的偏移量
            var _l = small.offsetLeft;
            var _t = small.offsetTop;
 
            //获取移动div宽度的一般
            var _w = move.offsetWidth/2;
            var _h = move.offsetHeight/2;
 
            //计算新的left值
            var newL = x-_l-_w;
            var newT = y-_t-_h;
 
            //检测越界
            if(newL <= 0){
                newL = 0;
            }
            var maxLeft = small.offsetWidth - move.offsetWidth;
            if(newL >= maxLeft){
                newL = maxLeft;
            }
 
            if(newT <= 0){
                newT = 0;
            }
            var maxTop = small.offsetHeight - move.offsetHeight;
            if(newT >= maxTop){
                newT = maxTop;
            }
 
            //设置css
            move.style.left = newL + 'px';
            move.style.top = newT + 'px';
 
            //计算移动的比例
            var sW = small.offsetWidth;
            var mL = newL;
 
            var p = mL/sW;
            //Y轴的比例
            var yP = newT/small.offsetHeight;
 
            //获取右侧大图的宽度
            var bW = bImg.offsetWidth;
            var bH = bImg.offsetHeight;
 
            //计算右侧图片移动的距离
            var nL = bW*p;
            var nT = bH*yP;
 
            //设置css样式
            bImg.style.left = -nL+'px';
            bImg.style.top = -nT + 'px';
 
            //计算移动div的宽度和高度
            var Bp = big.offsetWidth/bImg.offsetWidth;
            var sW = small.offsetWidth;
 
            var Bpp = big.offsetHeight/bImg.offsetHeight;
            var sH = small.offsetHeight;
 
            //计算新的宽度值
            var mW = sW*Bp;
            var mH = sH*Bpp;
 
            move.style.width = mW + 'px';
            move.style.height = mH + 'px';
        }
 
    //绑定鼠标离开事件
        small.onmouseout = function(){
            //visibility
            move.style.visibility = "hidden";
            big.style.display = "none";
        }
 
    //获取ul
        var ul = document.getElementById('imgs');
    //获取ul中的img
        var is = ul.getElementsByTagName('img');// document.getElementsByTagName
        for(var i=0;i<is.length;i++){
            is[i].onclick = function(){
                //获取当前点击图片的src属性
                var src = this.getAttribute('src');
                //设置src
                bImg.src = src;
                sImg.src = src;
            }
        }
 
    </script>
</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值