JS实现鼠标中心放大图片功能原理及实例演示
版权声明:本文为博主原创文章,未经博主允许不得转载。
在制作网页的过程中,特别是对于浏览图片的网页,难免会涉及实现图片放大缩小及拖拽的功能,一般上述的功能很好实现,但是很多小伙伴发现其实有一个东西很难搞,那就是如何实现鼠标中心放大图片功能?
首先,我要讲一下这一功能的数学原理:
上图是图片放大的效果图,对此,说明一下图中的参数:
图中, 十字代表鼠标光标的位置,
zrX:鼠标到原图左边距,
zrY:鼠标到原图顶边距,
zrX’:鼠标到放大图左边距,
zrY’:鼠标到放大图顶边距,
mL: 原图左边缘到Frame左边距,
mT: 原图上边缘到Frame顶边距,
mL’:放大图左边缘到Frame左边距,
mT’ : 放大图上边缘到Frame顶边距。
好了,首先像一个问题,该功能,我通过何种方法实现?
如果图片以鼠标所在点为中心放大或缩小,图片四边将会各自想外扩张,也就是将会有不同的增量,这样导致放大后的图片在Frame中的位置与之前不同,通过设置放大前与放大后图片的位置即可实现该功能。
那么,通过什么来定位呢?
通过上述的两个参数mT和mL也就是图片上边缘到Frame顶边距以及图片的左边到Frame左边距。这道几何题最后要求的就是放大后的mL’以及mT’。
如何求上述的两个值?
首先我们要搞清楚哪些是已知的,哪些是未知的:
在onmousewheel事件的情况下,获取event对象,
zrX:鼠标到原图左边距,event.zrX
zrY:鼠标到原图顶边距,event.zrY
获取图片所在的dom对象img
mL: 原图左边缘到Frame左边距,img.offsetLeft
mT: 原图上边缘到Frame顶边距,img.offsetTop
原图尺寸:img.width和img.height
放大系数:λ(手动输入)
放大图尺寸:img.width’和img.height’
img.width’ = λ · img.width
img.height’ = λ · img.height
以下是未知参数:
zrX’:鼠标到放大图左边距,
zrY’:鼠标到放大图顶边距,
mL’:放大图左边缘到Frame左边距,
mT’ : 放大图上边缘到Frame顶边距。
如何求上述未知参数?
首先通过对比关系得出zrX与zrX’及zrY与zrY’的关系式:
其次,通过鼠标对于Frame的相对位置不变的关系建立mL,mL’, mT, mT’的等式:
最后通过上述等式得出mL’与mT’的表达式:
这样就能求出图片放大的后的位置,至于缩小情况,不再赘述,只要把放大图作为原图,之前的原图作为缩小图即可,上述等式依然可用。
接下来是实例演示:
JS实现鼠标中心放大图片功能原理及实例演示相关推荐
- html鼠标悬浮更换图片,Vue.js鼠标悬浮更换图片功能
最近自己做的项目中设计师要求分类栏中鼠标悬停更换图片,大致实现出来的效果就是这样: 这个在jQuery中是个很简单的事,但是在vue中我还是第一次实现. 首先将所有的选中后图片都覆盖到没选中图片上 c ...
- Viewer.js点击按钮放大图片用法
1.Viewer.js点击按钮放大图片用法 <div onclick="getHideBig('hide_img_weight1')" id="btn_img_we ...
- html怎么鼠标经过添加蒙版遮罩,js实现鼠标移动到图片产生遮罩效果
本文实例为大家分享了js实现鼠标移动到图片产生遮罩效果的具体代码,供大家参考,具体内容如下 mask .pic{ width:300px; height:250px; background:url(i ...
- 用vue实现,鼠标悬停放大图片,根据鼠标位置倾斜图片网页源码
大家好,今天给大家介绍一款,用vue实现的,鼠标悬停放大图片,并根据鼠标位置倾斜图片前端网页源码(图1).送给大家哦,获取方式在本文末尾. 图1 鼠标悬停放大图片,鼠标移动图片就会进行相应角度的倾斜, ...
- php获取网络图片的大小,PHP获取远程图片尺寸和大小实例演示
这篇文章主要为大家详细介绍了PHP获取远程图片尺寸和大小实例演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. PHP功能强大,今天361源码给大家介绍的是: ...
- python打开word并插入图片_Python操作word文档插入图片和表格的实例演示
前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码 实例代码: # -*- coding: U ...
- php怎么在表格里插图片,Python操作word文档插入图片和表格的实例演示
今天带来Python操作word文档插入图片和表格的实例演示教程详解 前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多 ...
- html 图片滚动 放大缩小,js实现图片旋转 js滚动鼠标中间对图片放大缩小
从开通博客园到今天,有两个多月了.我发现之前没有开通博客记录自己所做的东西,真是后悔啊. 现在一点一点把自己所做的功能以博客的形式记录下来,一方面可以给大家分享,大家一起学习,同时自己也从新回顾一下. ...
- php 鼠标点击图片放大,鼠标移入放大图片预览效果实现
商城项目中,有鼠标移入图片放大的功能,研究一下实现 Image zoom body { display: flex; justify-content: center; align-items: cen ...
最新文章
- tomcat 软连接
- python定义匿名函数关键字_Python(11):Python函数基础(定义函数、函数参数、匿名函数)...
- Python小游戏(打乒乓)
- Java 创建线程的三种方法比较
- 「洛谷5017」「NOIP2018」摆渡车【DP,经典好题】
- 荣耀V8鸿蒙系统刷机包,华为荣耀V8原版rom系统刷机包_荣耀V8最新版升级包更新下载...
- Ubuntu 12 ssh 安装 终端命令 报软件依赖 错误(未解决)
- VMware虚拟机安装win10卡顿优化
- MySQL讲义第 53 讲——select 查询之 select 语句执行过程分析
- 科室管理系统中,运用百度编辑器(ueditor1_4_3-utf8-jsp)出现的一系列问题!
- mac 重置mysql root密码_Mac下忘记Mysql root密码重置
- db(德邦快递单号查询)
- 【win10蓝屏】记录一下,随机蓝屏,开机蓝屏,使用中蓝屏的经历
- 32位系统和64的区别c语言,32位 与 64 位 区别 : CPU 操作系统 应用程序...
- java秒表计时器_Java实现的计时器【秒表】功能示例
- LUN与LVM的关系
- 晶振(crystal)与谐振荡器(oscillator)
- 无线路由dns服务器地址,无线路由器更换DHCP地址段、DNS地址设置
- 手机QQ协议抓包教程
- 梦想扬帆,吹响一月号角