图片的放大

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <link rel="icon" href="img/favicon.ico" type="img/x-ico" />
    <title>Image Magnifying Glass</title>
    <!-- 放大镜的原理: 左边图片100%显示,右边图片200%显示并定位,定义两个图片框,将图片放入,图片超出相框部分隐藏,移动滑块,根据滑块的位置,计算出右边图片的定位,从而形成映射效果,即图片放大镜 -->
    <style type="text/css">
        body {
            margin: 0px;
            padding: 0px;
        }
        img {
            /* display: block; */
        }
        .leftcon {
            width: 350px;
            height: 350px;
            margin: 100px 20px 0px 312px;
            float: left;
            position: relative;
            box-shadow: 3px 3px 10px 0 #111111;
            -webkit-box-shadow: 3px 3px 10px 0 #111111;
            -moz-box-shadow: 3px 3px 10px 0 #111111;
        }
        .leftcon img {
            width: 100%;
            height: 100%;
        }
        .leftcon .slide_box {
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 175px;
            height: 175px;
            background: #000;
            opacity: 0.3;
            cursor: move;
        }
        .rightcon {
            display: none;
            width: 350px;
            height: 350px;
            margin-top: 100px;
            float: left;
            overflow: hidden;
            position: relative;
        }
        
        .rightcon img {
            width: 200%;
            height: 200%;
            position: absolute;
            left: 0px;
            top: 0px;
        }
    </style>
</head>

<body>
    <div class="leftcon" id="left">
        <img src="Pictures\p1.webp" />
        <div class="slide_box" id="box"></div>
    </div>
    <div class="rightcon" id="right">
        <img src="Pictures\p1.webp" />
    </div>
</body>
<script>
    var leftone = document.getElementById("left");
    var rightone = document.getElementById("right");
    var box = document.getElementById("box");
    var rimg = rightone.getElementsByTagName("img")[0];
    function getPosition(e) {
        var e = e || window.event;
        var top = e.clientY - leftone.offsetTop - box.offsetHeight / 2;
        var left = e.clientX - leftone.offsetLeft - box.offsetWidth / 2;
        var maxtop = leftone.offsetHeight - box.offsetHeight; //获取小滑块最大纵向移动距离
        var maxleft = leftone.offsetWidth - box.offsetWidth; //获取小滑块最大横向移动距离
        var mintop = 0; //获取小滑块最小纵向移动距离
        var minleft = 0; //获取小滑块最大纵向移动距离
        var mvtop; //定义小滑块的纵向移动距离
        var mvleft; //定义小滑块的横向移动距离
        if (top < mintop) {
            box.style.top = mintop + "px";
            mvtop = mintop;
        } else if (top > maxtop) {
            box.style.top = maxtop + "px";
            mvtop = maxtop;
        } else {
            box.style.top = top + "px";
            mvtop = top;
        }
        if (left < minleft) {
            box.style.left = minleft + "px";
            mvleft = minleft;
        } else if (left > maxleft) {
            box.style.left = maxleft + "px";
            mvleft = maxleft;
        } else {
            box.style.left = left + "px";
            mvleft = left;
        }
        rimg.style.top = -mvtop * 2 + "px";
        rimg.style.left = -mvleft * 2 + "px";
    }
    leftone.onmousemove = function(e) {
        var e = e || window.event; //判断事件源
        box.style.display = "block";
        getPosition(e);
        rightone.style.display = "block";
    };
    leftone.onmouseleave = function(e) {
        var e = e || window.event; //判断事件源
        box.style.display = "none";
        rightone.style.display = "none";
    };
</script>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值