位置: IT常识 - 正文

js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)(js图片放大代码)

编辑:rootadmin
js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小) 系列文章目录文章目录系列文章目录背景与效果图1.背景如下(功能图):2.效果图如下:拖拽后的效果缩放的效果放大的效果一、功能:支持鼠标长按拖拽1.鼠标事件:2.拖拽功能流程3.拖拽部分代码如下二、功能:滚轮控制图片放大缩小1.鼠标事件(推荐使用onwheel;mousewheel存在安全隐患)2.功能流程:3.具体代码如下:三、案例功能的完整代码如下:四、总结(一定要看,功能是有坑的)背景与效果图1.背景如下(功能图):

推荐整理分享js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)(js图片放大代码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript图片放大,js怎么放图片,js点击图片让图片放大显示,js图片局部放大,js图片展示,js实现图片的放大功能,js图片展示,js怎么放图片,内容如对您有帮助,希望把文章链接给更多的朋友!

该功能的需求点事2个月前的一个需求,当时采用的是Element-UI中的image图片做的一个功能,但是不能满足产品真实的需求,只能定制化自己封装。

该功能在Vue2 的element-UI中还是比较鸡肋的 ⬇️ ⬇️ Element-UI

该功能在Emenent-UI-plus(vue3)版本已经很好的支持了。 完整功能如下link⬇️ ⬇️ Element-Plus的Image标签

2.效果图如下:拖拽后的效果

缩放的效果

放大的效果

一、功能:支持鼠标长按拖拽1.鼠标事件:js实现图片的放大缩小(鼠标长按拖拽、鼠标滚轮控制放大缩小)(js图片放大代码)

onmouseup : 按键弹起事件 onmousemove :鼠标移动事件 onmousedown :鼠标按下事件

2.拖拽功能流程

1.给 需要移动的盒子 添加鼠标按下事件 : onmousedown 盒子要添加绝对定位 。

2.并且给全局(window)注册鼠标移动事件 : onmousemove

3.给需要移动的盒子添加鼠标距离左侧和顶部的长度

4.在鼠标按键松开后把全局注册的鼠标事件移除 (到此拖拽的功能基本完成)

这里如果使用的是img标签作为图片展示的话,一定要把img上的长按拖拽事件先去除,要不然就回出现BUG

3.拖拽部分代码如下 var divMove = document.querySelector('div') divMove.onmousedown = function (e) { window.onmousemove = function (event) { divMove.style.left=event.clientX-e.target.offsetWidth/2+'px' divMove.style.top=event.clientY-e.target.offsetHeight/2+'px' } } divMove.onmouseup=function(){ window.onmousemove =null }二、功能:滚轮控制图片放大缩小1.鼠标事件(推荐使用onwheel;mousewheel存在安全隐患)

1.onwheel : wheel当用户旋转定点设备(通常是鼠标)上的滚轮按钮时会触发该事件。(现在主流的浏览器都支持该事件)

2.mousewheel : 操作鼠标滚轮或类似设备时异步触发该事件。它由MouseWheelEvent界面表示

2.功能流程:

1.获取需要放大缩小的盒子DOM 给盒子绑定onwheel事件(这个事件里面存在在谷歌和火狐上放大和缩小的Api不准确,建议先尝试确认下)

2.给需要放大缩小的盒子DOM 添加Css样式 scale控制图片的缩放

3.具体代码如下: //scale是为了控制图片大小为正常渲染 let scale = 1 divMove.onwheel=function(e){ if(e.wheelDelta>0){ scale+=0.05 divMove.style.transform=`scale(${scale})` }else{ scale-=0.05 divMove.style.transform=`scale(${scale})` } }三、案例功能的完整代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> div { width: 500px; background-color: antiquewhite; position: absolute; background-image: url("https://top-mvp-img.xhscdn.com/miniimg/1000g1i81etmd8is4o0003oqd6mc015uq3uh1hcg"); background-repeat: no-repeat; background-size: 100% 100%; } </style></head><body> <button>重置</button> <div><img style=" width: 100%; visibility: hidden;" src="https://top-mvp-img.xhscdn.com/miniimg/1000g1i81etmd8is4o0003oqd6mc015uq3uh1hcg" alt=""></div></body><script> var button =document.querySelector('button') button.onclick=function(){ divMove.style.top=40+'px' divMove.style.left=10+'px' scale=1 divMove.style.transform=`scale(${scale})` } var divMove = document.querySelector('div') divMove.onmousedown = function (e) { window.onmousemove = function (event) { divMove.style.left=event.clientX-e.target.offsetWidth/2+'px' divMove.style.top=event.clientY-e.target.offsetHeight/2+'px' } } divMove.onmouseup=function(){ window.onmousemove =null } let scale = 1 divMove.onwheel=function(e){ if(e.wheelDelta>0){ scale+=0.05 divMove.style.transform=`scale(${scale})` }else{ scale-=0.05 divMove.style.transform=`scale(${scale})` } }</script></html>四、总结(一定要看,功能是有坑的)

在完整的代码里面给出了,多种解决图片拖拽和onmousemove冲突的问题,第一种:可以使用background-image代替img标签;第二种:可以使用img标签添加css的属性解决这个问题。

只是写了简易的功能,主要是为了给大家提供思路,可以通过这个小案例,完善自己的需求。

本文链接地址:https://www.jiuchutong.com/zhishi/278034.html 转载请保留说明!

上一篇:deepin20语音记事本在哪? deepin语音记事本的使用方法(deepin声音)

下一篇:win10待机自动关机怎么办(win10待机自动关机软件)

  • 住宿费收据属于什么凭证
  • 人工费用的核算例题
  • 培训费发票开具的要求
  • 客票服务主要包括
  • 款已付未收到发票怎么开
  • 附加税减免所得税汇缴的时候需要调整吗
  • 挂牌出售无形资产
  • 纳税人财务会计报表报送管理办法
  • 结转净利润到利润分配分录
  • 广告制作税目
  • 经纪代理服务怎么做分录
  • 公司拓展训练入什么会计科目核算做分录?
  • 收到法人的借款
  • 公司注销公告怎么发布
  • 出现销项负数
  • 支付的劳务派遣服务费现金流量
  • 进口货物付款计入哪个科目?
  • 外籍人士劳务费怎么交税
  • 外购无形资产的成本包括进口关税吗
  • 商会会费收取
  • 成本算错了
  • 咨询公司怎么交社保
  • 兼职人员的工资需要发票吗
  • 计提小规模增值税的账务处理
  • 一般纳税人税负率是多少
  • 没有发票申报纳税怎么办
  • 签订租赁合同的期限
  • 个体工商户和个人商家的区别
  • linux中添加用户和组的操作
  • 电脑怎样进入cmos设置
  • 波特兰在哪
  • 企业可以超范围经营吗
  • 国家规定免税饲料具体哪些产品
  • 增值税需不需要计提
  • 增值税纳税人的相关规定
  • 附加税退税申请理由模板
  • 若依框架使用教程
  • 心形岛屿叫什么名字
  • 杭州西湖古风
  • 事业单位用其他资金用于还单位贷款违法吗
  • 建设项目财务费用包括
  • 策划费多少钱
  • 民间非营利组织包括哪些单位
  • 实收资本何时入账
  • 非民营企业会计账务处理
  • 施工单位转包需要受到什么惩罚
  • 应交税费在会计科目的借贷方向
  • 什么叫金税四期呢?
  • 计提所得税后再结转本年利润吗
  • 怎样计算主营业务收入
  • 去年购进的货物怎么做账
  • 建设银行e信通介绍
  • 股息和资本收益
  • 银行账户收费开户流程
  • 一般纳税人的月销售额是多少可以不用交增值税
  • 零申报报表怎么填写
  • 公司车辆保养计入什么费用
  • 余额调节表一定要编制吗
  • 注册资本转出可以吗
  • 劳务发票成本怎么做账
  • mysql m1
  • win7系统重启后多了一个安全启动用户
  • win7怎么翻转桌面
  • 电脑被攻击了怎么修复
  • ubuntu系统中怎么重启proftpd程序
  • mac如何快速关闭程序
  • ubuntu系统虚拟机运行
  • macbook imessage
  • win10系统中怎么重新启动netframework
  • win8如何进行系统还原
  • python用while循环求π的值
  • cmd下copy命令
  • jquery中keyup
  • unity3d中用四元数 Quaternion来对一个坐标点进行旋转的初步体会
  • JQuery绑定事件的函数是
  • 上海地铁和公交乘车码
  • 北京税务部门需要党员吗
  • 财产租赁包括哪些财产
  • 小微企业印花税减免政策2024
  • 二手房交易契税减免政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设