当前位置: 首页 > article >正文

放大镜效果

题九:放大镜效果

要求:
1.鼠标移至图片上方,鼠标周围出现黄色的的正方形框,黄色矩形 框会随着鼠标的移动而移动;
2.将黄色正方形框里的内容的长和宽均放大2.4倍,并在图片右边进 行显示。

原理:

  1. 首先把要放大的图片先size*2.4倍,位置要从零开始,绑定事件mousemove一定不要写错。
  2. 定位鼠标在视口的位置,在减去图片离视口的位置,就是鼠标在图片中的位置,高度的话还要减去滚动卷去的高度。
  3. 最后在图片的范围内,实现放大效果(加-才能网正方向去)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .con {
            width: 100%;
            height: 1000px;
         }
        .small {
            width: 400px;
            height: 400px;
            background-image: url(./任务/交互图片/9.jpg);
            background-repeat: no-repeat;
            background-size: cover;
            border: 1px solid black;
            display: inline-block;
        }
        .big {
            width: 400px;
            height: 400px;
            border: 1px solid black;
            display: inline-block;
            background-image: url(./任务/交互图片/9.jpg);
            background-repeat: no-repeat;
            background-size: 960px ,960px;
            background-position: 0,0;
        }
     
    </style>
</head>
<body>
    <div class="con">
        <div class="small">
            <div class="black"></div>
        </div>
        <div class="big"></div>
    </div>
    <script>
       

        const small = document.querySelector('.small');
        const big = document.querySelector('.big');

        small.addEventListener('mousemove', function (e) {
            const rect = small.getBoundingClientRect();
            let x = e.pageX - rect.left;
            let y = e.pageY - rect.top - document.documentElement.scrollTop;

            if (x >= 0 && x <= rect.width && y >= 0 && y <= rect.height) {
              
                big.style.backgroundPositionX = -x * 2.4 + 'px';
                big.style.backgroundPositionY = -y * 2.4 + 'px';
            }
        });
    </script>
</body>
</html>

视频:

放大镜效果


http://www.kler.cn/a/550203.html

相关文章:

  • Redis原理简述及发布订阅消息队列
  • 技术速递|Copilot Edits(预览版)介绍
  • ubuntu桌面东西没了,右键只有更换壁纸,显示设置和设置
  • Android 14输入系统架构分析:图解源码从驱动层到应用层的完整传递链路
  • 笔记9——循环语句:for语句、while语句
  • 通过TDE工业通讯网关解决设备通讯问题
  • 在自有ARM系统上离线安装MongoDB的坎坷历程与解决方案
  • 5.【线性代数】—— 转置,置换和向量空间
  • OpenCV(1):简介、安装、入门案例、基础模块
  • 使用 Spring Boot 和 Canal 实现 MySQL 数据库同步
  • 二、从0开始卷出一个新项目之瑞萨RZT2M双核架构通信和工程构建
  • 【实战项目】BP神经网络识别人脸朝向----MATLAB实现
  • 【蓝桥杯集训·每日一题2025】 AcWing 6122. 农夫约翰的奶酪块 python
  • 如何将模型长度扩展到100万:Llama 3的NTK-aware插值技术解析 小学生都懂的
  • React进阶之React核心源码解析(二)
  • Zabbix——监控Windows下某个文件夹的所有文件变化
  • JUC并发-wait和notify以及Atomic原理
  • 开源模型应用落地-LangGraph101-探索 LangGraph 短期记忆
  • 5.日常英语笔记
  • 鸿蒙5.0实战案例:数据库版本升级案例