JavaScript如何实现放大镜
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,这篇文章给大家分享的是有关JavaScript如何实现放大镜的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现原理借助宽高等比例放大的两张图片,结合js中鼠标偏移量、元素偏
千家信息网最后更新 2025年11月18日JavaScript如何实现放大镜实现原理
这篇文章给大家分享的是有关JavaScript如何实现放大镜的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
实现原理
借助宽高等比例放大的两张图片,结合js中鼠标偏移量、元素偏移量、元素自身宽高等属性完成;左侧遮罩移动Xpx,右侧大图移动X*倍数px;其余部分就是用小学数学算一下就OK了。
HTML和CSS:
* { margin: 0; padding: 0; } .wrap { width: 1500px; margin: 100px auto; } #small { width: 432px; height: 768px; float: left; position: relative; } #big { /* background-color: seagreen; */ width: 768px; height: 768px; float: left; /* 超出取景框的部分隐藏 */ overflow: hidden; margin-left: 20px; position: relative; display: none; } #bigimg { /* width: 864px; */ position: absolute; left: 0; top: 0; } #mark { width: 220px; height: 220px; background-color: #fff; opacity: .5; position: absolute; left: 0; top: 0; /* 鼠标箭头样式 */ cursor: move; display: none; }// 获取小图和遮罩、大图、大盒子 var small = document.getElementById("small") var mark = document.getElementById("mark") var big = document.getElementById("big") var bigimg = document.getElementById("bigimg") // 在小图区域内获取鼠标移动事件;遮罩跟随鼠标移动 small.onmousemove = function (e) { // 得到遮罩相对于小图的偏移量(鼠标所在坐标-小图相对于body的偏移-遮罩本身宽度或高度的一半) var s_left = e.pageX - mark.offsetWidth / 2 - small.offsetLeft var s_top = e.pageY - mark.offsetHeight / 2 - small.offsetTop // 遮罩仅可以在小图内移动,所以需要计算遮罩偏移量的临界值(相对于小图的值) var max_left = small.offsetWidth - mark.offsetWidth; var max_top = small.offsetHeight - mark.offsetHeight; // 遮罩移动右侧大图也跟随移动(遮罩每移动1px,图片需要向相反对的方向移动n倍的距离) var n = big.offsetWidth / mark.offsetWidth // 遮罩跟随鼠标移动前判断:遮罩相对于小图的偏移量不能超出范围,超出范围要重新赋值(临界值在上边已经计算完成:max_left和max_top) // 判断水平边界 if (s_left < 0) { s_left = 0 } else if (s_left > max_left) { s_left = max_left } //判断垂直边界 if (s_top < 0) { s_top = 0 } else if (s_top > max_top) { s_top = max_top } // 给遮罩left和top赋值(动态的?因为e.pageX和e.pageY为变化的量),动起来! mark.style.left = s_left + "px"; mark.style.top = s_top + "px"; // 计算大图移动的距离 var levelx = -n * s_left; var verticaly = -n * s_top; // 让图片动起来 bigimg.style.left = levelx + "px"; bigimg.style.top = verticaly + "px"; } // 鼠标移入小图内才会显示遮罩和跟随移动样式,移出小图后消失 small.onmouseenter = function () { mark.style.display = "block" big.style.display= "block" } small.onmouseleave = function () { mark.style.display = "none" big.style.display= "none" }感谢各位的阅读!关于"JavaScript如何实现放大镜"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
移动
鼠标
偏移
大图
图片
放大镜
临界值
元素
内容
右侧
更多
样式
篇文章
范围
边界
部分
不错
实用
上边
事件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科乐美实况足球数据库
网络安全人员年度培训学时
服务器登录显示无效
io流在软件开发的使用
泰拉瑞亚手机版怎么查看自己的服务器ip
长沙软件开发定制公司有哪些
数据库安全技术测验题1
广州超矩互联网科技有限公司
服务器监控管理软件pum
网络安全威胁空前突出的什么
网络安全法对银行的启发
安徽新品服务器厂家直供
重庆应用软件开发要多少钱
微信公众号软件开发公司有哪些
服务器长时间关机阵列丢失
网络安全宣传板报学校
java服务器时间
服务器可以做云桌面吗
延庆区品牌软件开发价格优惠
网络安全宣传先进个人事迹
教育信息化与网络安全培训体会
哇哦互联网科技徐州有限公司
江苏瑞星网络安全监测系统
萍乡正规服务器哪家好点
sygon服务器修改管理口
服务器在南方
软件开发工程师助理的面试
梦幻西游转服后多久能转回服务器
山东hp服务器续保哪家便宜
网络安全舆情应对