10. JS放大镜效果 | 青训营

126 阅读3分钟

这段时间通过学习HTML与JavaScript,我自主学习掌握了JS放大镜效果的知识。JS放大镜效果是一种常见的网页交互效果,它允许用户在鼠标悬停或点击某个元素上时,在指定区域显示该元素的放大图像,下面是我的学习记录。

一、创建HTML结构

在HTML文件中创建一个包含原始图像的<div>元素,并在其上方创建另一个<div>作为放大区域。

<div class="one">
        <div class="meng"></div>
        <div class="flag"></div>
    </div>
    <div class="two">
        <img src="./images/05.jpg" alt="" id="bigImg">
    </div>

这里代码的作用是在页面上选择一个元素作为触发放大镜的目标,我们选择图片如下所示。

05.jpg

二、样式设计

使用CSS来设置图像容器和放大区域的样式。

* {
            margin: 0;
            padding: 0;
        }
        /* 小图 */
        .one {
            width: 370px;
            height: 490px;
            background: url(./images/5.png) no-repeat 0 0;
            border: 1px solid #CCC;
            position: relative;
            left: 20px;
            top: 20px;
            float: left;
        }
        /* 大图 */
        .two {
            width: 370px;
            height: 490px;
            position: relative;
            float: left;
            margin-left: 40px;
            margin-top: 20px;
            overflow: hidden;
            display: none;
        }

        /* 小滑块 */
        .flag {
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
            background: rgba(240, 224, 81, 0.6);
            display: none;
            border: 1px solid rgba(100, 100, 100, 0.5);
        }
        .meng {
            width: 370px;
            height: 490px;
            position: absolute;
            left: 0;
            top: 0;
            background: rgba(0, 0, 0, 0);
            /* display: none; */
            z-index: 99;
            cursor:move;
        }

        #bigImg {
            position: absolute;
            left: 0;
            top: 0;
        }

这里代码的作用如下:

  • 创建一个用于显示放大图像的区域(放大镜窗口)。

  • 设置放大镜窗口的位置为鼠标当前位置,使其跟随鼠标移动。

  • 设置放大镜窗口的背景图像为目标元素的图像。

  • 设置放大镜窗口的尺寸和样式,以适应放大效果需求。

三、JS交互设计

使用JavaScript来实现放大镜效果。

// 获取操作对象

        //1.获取小图
        let smallImg = document.querySelector('.one');
        let { log } = console;

        //2.获取大图
        let bigImg = document.querySelector('#bigImg');

        //3.获取小滑块
        let flagDiv = document.querySelector('.flag');

        // 获取蒙版
        let meng = document.querySelector('.meng');

        // 添加监听事件

        //2.鼠标移出事件
        smallImg.addEventListener('mouseout', function () {
            // 隐藏大图
            bigImg.parentElement.style.display = 'none';

            // 隐藏小滑块
            flagDiv.style.display = 'none';
        })

        //3.鼠标移动事件
        meng.addEventListener('mousemove', function (e) {

            //处理事件对象的兼容性
            let ev = e || window.event;

            // 获取鼠标的坐标
            let mouseX = ev.offsetX;
            let mouseY = ev.offsetY;
          
            // // 显示小滑块
            flagDiv.style.display = 'block';
            
            flagDiv.style.left = (mouseX - flagDiv.offsetWidth / 2) + 'px';
            flagDiv.style.top = (mouseY - flagDiv.offsetHeight / 2) + 'px';

这里的代码作用如下:

  • 更新放大镜窗口的位置为鼠标当前位置,以保持跟随鼠标移动。

  • 根据鼠标位置计算目标元素中对应位置的坐标,用于确定放大图像的显示部分。

  • 鼠标移出事件包含隐藏大图和隐藏小滑块。

  • 鼠标移动事件包含处理事件对象的兼容性、获取鼠标的坐标和显示小滑块。

四、效果展示

image.png

五、总结

要实现JS放大镜效果,需要一个图像容器、放大区域以及相关的HTML、CSS和JavaScript代码。通过监听鼠标事件、计算位置和样式更新,可以让放大区域根据鼠标位置实时显示原始图像的放大图像。