用JS实现放大镜效果
发布日期:2021-05-08 13:32:37 浏览次数:19 分类:精选文章

本文共 2225 字,大约阅读时间需要 7 分钟。

放大镜功能实现

放大镜是一种常见的网页交互效果,通过鼠标移动可以实现元素的放大和跟随效果。以下是放大镜功能的实现步骤和代码解析:

功能模块

  • 选择元素
  • 绑定事件
  • 显示与隐藏
  • 移动跟随
  • 边界限定
  • 比例计算
  • 设置位置
  • 实现步骤

  • 选择需要放大镜作用的元素
  • 绑定鼠标进入、离开、移动等事件
  • 实现显示和隐藏功能
  • 计算鼠标移动的比例
  • 实现元素跟随鼠标移动的效果
  • 设置边界限制
  • 根据比例计算放大镜的位置
  • 代码解析

    function Magnifier() {    // 选择元素    this.sBox = document.querySelector(".small_box");    this.span = document.querySelector(".small_box span");    this.bBox = document.querySelector(".big_box");    this.bImg = document.querySelector(".big_box img");        // 绑定事件    this.addEvent();}Magnifier.prototype.addEvent = function() {    var that = this;        // 进入事件    this.sBox.addEventListener("mouseover", function() {        that.show();    });        // 离开事件    this.sBox.addEventListener("mouseout", function() {        that.hide();    });        // 移动事件    this.sBox.addEventListener("mousemove", function(e) {        var e = e || window.event;        that.move(e);    });}Magnifier.prototype.show = function() {    this.span.style.display = "block";    this.bBox.style.display = "block";        // 计算比例    this.sBoxW = this.sBox.offsetWidth;    this.sBoxH = this.sBox.offsetHeight;    this.spanW = this.span.offsetWidth;    this.spanH = this.span.offsetHeight;    this.bBoxW = this.bBox.offsetWidth;    this.bBoxH = this.bBox.offsetHeight;    this.bImgW = this.bImg.offsetWidth;    this.bImgH = this.bImg.offsetHeight;}Magnifier.prototype.hide = function() {    this.span.style.display = "none";    this.bBox.style.display = "none";}Magnifier.prototype.move = function(e) {    // 计算移动坐标    var l = e.clientX - this.sBoxL - this.spanW / 2;    var t = e.clientY - this.sBoxT - this.spanH / 2;        // 边界限定    if (l < 0) l = 0;    if (t < 0) t = 0;    if (l > this.sBoxW - this.spanW) l = this.sBoxW - this.spanW;    if (t > this.sBoxH - this.spanH) t = this.sBoxH - this.spanH;        // 更新位置    this.span.style.left = l + "px";    this.span.style.top = t + "px";        // 计算比例并设置大图位置    var x = l / (this.sBoxW - this.spanW);    var y = t / (this.sBoxH - this.spanH);        this.bImg.style.left = x * -Math.abs(this.bImgW - this.bBoxW) + "px";    this.bImg.style.top = y * -Math.abs(this.bImgH - this.bBoxH) + "px";}

    代码结构

  • 放大镜类定义
  • 初始化元素
  • 添加事件处理
  • 显示与隐藏方法
  • 移动处理方法
  • 获取尺寸
  • 计算位置
  • 更新元素位置
  • 通过以上代码实现的放大镜功能可以满足用户的交互需求,同时支持鼠标移动和比例放大效果。

    上一篇:JS实现计算最大值max,最小值min 随机生成,进行 排序,去重。
    下一篇:js设置小球的缓冲运动

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年03月20日 18时01分01秒