放大镜案例

news/2025/2/23 12:18:02

一、Html的搭建

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- 页面元信息及样式 -->
  </head>
  <body>
    <div class="camera">
      <!-- 小图 -->
      <div class="cameraImg">
        <img src="./img0.jpg" alt="" />
      </div>
      <!-- 放大镜 -->
      <div class="zoom"></div>
      <!-- 大图 -->
      <div class="bDiv">
        <img src="./img1.jpg" alt="" class="bImg" />
      </div>
    </div>
    <!-- 引入 js -->
    <script>
      // JavaScript 代码
    </script>
  </body>
</html>

二、对Html加入CSS页面样式进行页面渲染

 <style>
      * {
        margin: 0;
        padding: 0;
      }
      /* 小图 */
      .camera {
        width: 300px;
        height: 300px;
        position: relative;
        border: 1px solid black;
      }

      .cameraImg img {
        width: 300px;
        height: 300px;
      }
      /* 遮罩层 */
      .zoom {
        width: 100px;
        height: 100px;
        background-color: #ccc;
        opacity: 0.8;
        position: absolute;
        top: 0px;
        left: 0px;
        display: none;
      }
      /* 大图 */

      .bDiv {
        width: 500px;
        height: 500px;
        background-color: bisque;
        position: absolute;
        left: 350px;
        top: 0;
        overflow: hidden;
        display: none;
      }
      .bImg {
        position: absolute;
        top: 0;
        left: 0;
      }
</style>

三、加入JavaScript实现页面的交互效果

1、鼠标进入小图区域时显示遮罩层和大图区域;鼠标离开小图区域时隐藏遮罩层和大图区域。
javascript">//获取camera和zoom节点
let camera = document.querySelector('.camera');
let zoom = document.querySelector('.zoom');
//鼠标进入小图区域时显示遮罩层和大图区域
camera.onmouseenter=function(){
        zoom.style.display='block';
        bDiv.style.display='block';
      }
//鼠标离开小图区域时隐藏遮罩层和大图区域
camera.onmouseleave=function(){
        zoom.style.display='none';
        bDiv.style.display='none';
      }
2、鼠标在小图区域移动时更新遮罩层和大图的位置
javascript"> let bDiv = document.querySelector('.bDiv');
 let bImg = document.querySelector('.bImg');
//鼠标在 camera 元素内部移动的事件绑定
camera.onmousemove=function(event){

        //鼠标相对于浏览器窗口可视区域左上角的垂直和水平坐标
        let mouseY = event.clientY;
        let mouseX = event.clientX;

        //鼠标相对于 camera 元素的位置
        let zoomTop = camera.offsetTop;
        let zoomLeft = camera.offsetLeft;

        //zoom 元素(放大镜遮罩层)的宽度和高度
        let zoomW = zoom.offsetWidth;
        let zoomH = zoom.offsetHeight;

        //计算放大镜遮罩层的位置
        let zoomY = mouseY - zoomTop -zoomH / 2;
        let zoomX = mouseX - zoomLeft - zoomW / 2;
        // console.log(zoomX,zoomY);

        //限制放大镜遮罩层的移动范围
        if(zoomX >= 200){
          zoomX = 200;
        }
        if(zoomX <= 0){
          zoomX = 0;
        }
        if(zoomY >= 200){
          zoomY = 200;
        }
        if(zoomY <= 0){
          zoomY = 0;
        }

        //更新放大镜遮罩层的位置
        zoom.style.top = zoomY +'px';
        zoom.style.left = zoomX + 'px';

        //计算大图的移动距离
        let bImgWidth = bImg.offsetWidth - bDiv.offsetWidth;
        let bImgHeight = bImg.offsetHeight - bDiv.offsetHeight;
        let bImgTop = (zoomY / 200) * bImgHeight;
        let bImgLeft = (zoomX / 200) * bImgWidth;

        //更新大图的位置
        bImg.style.top = -bImgTop +'px';
        bImg.style.left = -bImgLeft + 'px';


http://www.niftyadmin.cn/n/5863392.html

相关文章

【GreatSQL优化器-15】index merge

【GreatSQL优化器-15】index merge 一、index merge介绍 GreatSQL的优化器的Index Merge Optimization是查询优化器在处理复杂查询时使用的一种高级技术。当查询的 WHERE 子句中有多个独立的条件&#xff0c;且每个条件都可以使用不同的索引时&#xff0c;优化器会尝试将这些…

Windows使用docker部署fastgpt出现的一些问题

文章目录 Windows使用docker部署FastGPT出现的一些问题1.docker部署pg一直重启的问题2.重启MongoDB之后一直出现“Waiting for MongoDB to start...”3.oneapi启动不了failed to get gpt-3.5-turbo token encoder Windows使用docker部署FastGPT出现的一些问题 1.docker部署pg一…

2025吐槽季第一弹---腾讯云EO边缘安全加速平台服务

前言&#xff1a; 关于EO边缘安全加速平台服务 参照&#xff1a;产品概述,具体如下&#xff1a; 边缘安全加速平台 EO&#xff08;Tencent Cloud EdgeOne&#xff0c;下文简称为 EdgeOne&#xff09;是国内首款基于全新架构的真正一体化的边缘安全加速平台。提供全面的安全防…

华为云镜像加速器

容器镜像服务-控制台 按顺序操作即可

nginx反向代理以及负载均衡(常见案例)

一、nginx反向代理 1、什么是代理服务器&#xff1f; 代理服务器&#xff0c;客户机在发送请求时&#xff0c;不会直接发送给目的主机&#xff0c;而是先发送给代理服务器&#xff0c;代理服务接受客户机请求之后&#xff0c;再向主机发出&#xff0c;并接收目的主机返回的数据…

【多模态处理篇二】【深度揭秘:DeepSeek视频理解之时空注意力机制解析】

一、为啥要搞视频理解这事儿 咱先唠唠为啥视频理解这么重要哈。现在这互联网时代,视频那可是铺天盖地的。你刷短视频平台,看在线电影,玩游戏直播,到处都是视频。但是计算机它一开始可不懂视频里到底是啥意思,它看到的就是一堆像素点和声音信号。 视频理解呢,就是要让计…

PyTorch v2.6 Overview

PyTorch v2.6 Overview Python APILibraries PyTorch 是一个优化的张量库&#xff0c;用于使用 GPU 和 CPU 进行深度学习。 Python API 序号API名称解释1torchPyTorch 核心库(中文:火炬)PyTorch 的核心库&#xff0c;提供了张量操作、自动求导等基础功能。2torch.nn神经网络模…

(java/Spring boot)使用火山引擎官方推荐方法向大模型发送请求

首先在maven里面引入官方依赖 <dependency><groupId>com.volcengine</groupId><artifactId>volcengine-java-sdk-ark-runtime</artifactId><version>LATEST</version></dependency>然后我们编写测试类 package com.volcengin…