
用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";}
代码结构
通过以上代码实现的放大镜功能可以满足用户的交互需求,同时支持鼠标移动和比例放大效果。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月20日 18时01分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
数据仓库之拉链表
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06
物联网、5G世界与大数据管理
2019-03-06
Cassandra与Kubernetes
2019-03-06
.NET应用框架架构设计实践 - 概述
2019-03-06
Rust 内置 trait :PartialEq 和 Eq
2019-03-06
Hibernate(十四)抓取策略
2019-03-06
Mybatis入门之增删改查
2019-03-06
[菜鸟的设计模式之旅]观察者模式
2019-03-06
Spring-继承JdbcDaoSupport类后简化配置文件内容
2019-03-06
Java基础IO流(一)
2019-03-06
Hibernate入门(四)---------一级缓存
2019-03-06
MySQL事务(学习笔记)
2019-03-06
一个web前端开发者的日常唠叨
2019-03-06
内存分配-slab分配器
2019-03-06
技术写作技巧分享:我是如何从写作小白成长为多平台优秀作者的?
2019-03-06
Jupyter Notebook 暗色自定义主题
2019-03-06
[Python学习笔记]组织文件
2019-03-06
DCL之单例模式
2019-03-06