商品图片放大镜的JavaScript实现

html代码

<div id="content">
    <div id="box">
        <img src="imgs/1-large.jpg" class="middle">
        <div id="filter"></div>
    </div>
    <div id="max">
        <img src="imgs/1-large.jpg" id="maxImg">
    </div>
    <div>
        <img src="imgs/1-small.jpg" class="small" data-url="imgs/1-large.jpg">
        <img src="imgs/2-small.jpg" class="small" data-url="imgs/2-large.jpg">
        <img src="imgs/3-small.jpg" class="small" data-url="imgs/3-large.jpg">
        <img src="imgs/4-small.jpg" class="small" data-url="imgs/4-large.jpg">
        <img src="imgs/5-small.jpg" class="small" data-url="imgs/5-large.jpg">
    </div>
</div>

css代码

  * {
            margin: 0;
            padding: 0;
        }

        #content {
            position: relative;
        }

        #box {
            width: 400px;
            height: 400px;
            border: 1px solid #000;
            position: relative;
        }

        #box > img {
            width: 400px;
            height: 400px;
        }

        #filter {
            width: 200px;
            height: 200px;
            background: #000;
            opacity: 0.6;
            position: absolute;
            left: 0;
            top: 0;
            display: none;
            cursor: move;
        }

        .small {
            margin: 0 10px;
            border: 1px solid #fff;
        }

        .small:hover {
            border-color: #000;
        }

        #max {
            position: absolute;
            left: 430px;
            top: 0;
            width: 400px;
            height: 400px;
            overflow: hidden;
        }

        #maxImg {
            width: 800px;
            height: 800px;
            position: absolute;
            left: 0;
            top: 0;
        }

JS代码

 /*
        建议 小方块 中图  以及大图的比例是 1:2:4
     */
    var aSmall = document.querySelectorAll(".small");
    var omiddle = document.querySelector(".middle");

    var oBox = document.getElementById("box");
    var oFilter = document.getElementById("filter");
    var maxImg = document.getElementById("maxImg");
    for (var i = 0; i < aSmall.length; i++) {
        aSmall[i].onmouseover = function () {
            var src = this.getAttribute("data-url");
            omiddle.src = src;
            maxImg.src = src;
        }
    }

    /放大镜//
    maxImg.style.display = "none";
    oBox.onmouseover = function () {
        maxImg.style.display = "block";
        oFilter.style.display = "block";
        this.onmousemove = function (e) {
            var e = e || event;
            var l = e.clientX - oFilter.offsetWidth / 2;
            var t = e.clientY - oFilter.offsetHeight / 2;
            
            l = l >= oBox.offsetWidth - oFilter.offsetWidth ? l = oBox.offsetWidth - oFilter.offsetWidth : (l <= 0 ? l = 0 : l = l);
            t = t >= oBox.offsetHeight - oFilter.offsetHeight ? t = oBox.offsetHeight - oFilter.offsetHeight : (t <= 0 ? t = 0 : t = t);

            oFilter.style.left = l + 'px';
            oFilter.style.top = t + 'px';

            maxImg.style.left = -2 * l + 'px';
            maxImg.style.top = -2 * t + 'px';
        }
    };
    oBox.onmouseout = function () {
        oFilter.style.display = "none";
        maxImg.style.display = "none";
    }

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值