JavaScript写图片放大镜

第一个JavaScript案例,写的是网页中经常可以见到的图片放大镜, 看一下效果,如下图:

代码如下:


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>放大镜</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .block {
            position: relative;
            width: 350px;
            height: 533px;
            margin: 0 auto;
        }

        .centerimage {
            position: relative;
            width: 350px;
            height: 449px;
            overflow: hidden;
        }

        .smallimage {
            width: 300px;
            height: 64px;
            margin-top: 20px;
            margin-left: 25px;
        }

        .centerimage > img {
            width: 350px;
            height: 449px;
            vertical-align: middle;
        }

        .smallimage > div {
            width: 50px;
            height: 64px;
            float: left;
            margin: 0 3px;
            border: 2px solid transparent;
            /*#e60000*/
        }

        .smallimage img {
            width: 50px;
            height: 64px;
            vertical-align: middle;
        }

        .ceng {
            position: absolute;
            display: none;
            z-index: 1;
            width: 236.25px;
            height: 236.31px;
            background: url("./image/1.png");
            background-size: 3px 3px;
        }

        .bigImage {
            position: absolute;
            left: 350px;
            width: 533px;
            height: 537px;
            border: 1px solid silver;
            box-sizing: border-box;
            display: none;
            background-repeat: no-repeat;
            background-size: 800px 1026px;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="bigImage"></div>
    <div class="centerimage" data-src="./image/5b7cf1e5Nb30e8c50.jpg!cc_800x1026.jpg">
        <div class="ceng"></div>
        <img class="middleImage" src="./image/5b7cf1e5Nb30e8c50.jpg!cc_350x449.jpg" alt=""/>
    </div>
    <div class="smallimage">
        <div class="small" data-big="./image/5b7cf1e5Nb30e8c50.jpg!cc_800x1026.jpg"
             data-src="./image/5b7cf1e5Nb30e8c50.jpg!cc_350x449.jpg"><img
                src="./image/5b7cf1e5Nb30e8c50.jpg!cc_50x64.jpg" alt=""/></div>
        <div class="small" data-big="./image/5b7cf1e9Nd7350f8b.jpg!cc_800x1026.jpg"
             data-src="./image/5b7cf1e9Nd7350f8b.jpg!cc_350x449.jpg"><img
                src="./image/5b7cf1e9Nd7350f8b.jpg!cc_50x64.jpg" alt=""/></div>
        <div class="small" data-big="./image/5b7cf1ebNdf72f42b.jpg!cc_800x1026.jpg"
             data-src="./image/5b7cf1ebNdf72f42b.jpg!cc_350x449.jpg"><img
                src="./image/5b7cf1ebNdf72f42b.jpg!cc_50x64.jpg" alt=""/></div>
        <div class="small" data-big="./image/5b7cf1ecN6742c614.jpg!cc_800x1026.jpg"
             data-src="./image/5b7cf1ecN6742c614.jpg!cc_350x449.jpg"><img
                src="./image/5b7cf1ecN6742c614.jpg!cc_50x64.jpg" alt=""/></div>
        <div class="small" data-big="./image/5b7cf1eeN9a440daf.jpg!cc_800x1026.jpg"
             data-src="./image/5b7cf1eeN9a440daf.jpg!cc_350x449.jpg"><img
                src="./image/5b7cf1eeN9a440daf.jpg!cc_50x64.jpg" alt=""/></div>
    </div>
</div>
<script>
    //获取元素
    var block = document.getElementsByClassName("block")[0];
    var bigImage = document.getElementsByClassName("bigImage")[0];
    var center = document.getElementsByClassName("centerimage")[0];
    var cengD = document.getElementsByClassName("ceng")[0];
    var middle = document.getElementsByClassName("middleImage")[0];
    var smallImage = document.getElementsByClassName("small");
    smallImage[0].style.borderColor = "#e60000";
    var redborderObject = smallImage[0];
    for (var i = 0; i < smallImage.length; i++) {
        smallImage[i].onmouseenter = function () {
            redborderObject.style.borderColor = "transparent";
            this.style.borderColor = "#e60000";
            redborderObject = this;
            //在鼠标进入的时候去获取当前小图所对应的中图
            middle.src = this.getAttribute("data-src");
            center.setAttribute("data-src", this.getAttribute("data-big"))
        }
    }
    //鼠标进入的时候层出现大图出现
    center.onmouseenter = function () {
        bigImage.style.display = "block";
        cengD.style.display = "block";
        //让最大的图切换 并且移动
        bigImage.style.backgroundImage = "url(" + center.getAttribute("data-src") + ")";
    };
    //鼠标移动的时候获取鼠标坐标
    center.onmousemove = function (e) {
        this.style.cursor = "move";//鼠标样式变换
        var x = e.pageX || e.clientX;
        var y = e.pageY || e.clientY;
        //中图的位置
        var left = (x - block.offsetLeft - 118.125) <= 0 ? 0 : (x - block.offsetLeft - 118.125) >= 113.75 ? 113.75 : (x - block.offsetLeft - 118.125);
        var top = (y - block.offsetTop - 118.115) <= 0 ? 0 : (y - block.offsetTop - 118.115) >= 212.69 ? 212.69 : (y - block.offsetTop - 118.115);
        cengD.style.left = left + "px";
        cengD.style.top = top + "px";

        //鼠标移动的时候控制大图移动
        bigImage.style.backgroundPosition = -left * 2.28 + "px " + -(top * 2.28) + "px";
    };
    //鼠标离开的时候隐藏层和大图
    center.onmouseleave = function () {
        cengD.style.display = "none";
        bigImage.style.display = "none";
    }
</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_43684713/article/details/86776259