位置: 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待机自动关机软件)

  • 怎么通过引流赚钱?简简单单说几个重点!(怎么引流赚钱粉)

    怎么通过引流赚钱?简简单单说几个重点!(怎么引流赚钱粉)

  • 怎样发帖不容易被删(怎样发帖不容易被删除)

    怎样发帖不容易被删(怎样发帖不容易被删除)

  • 华为手机如何解除锁屏密码(华为手机如何解除风险管控)

    华为手机如何解除锁屏密码(华为手机如何解除风险管控)

  • 手机如何绑定社保卡(手机如何绑定社保卡跟家人)

    手机如何绑定社保卡(手机如何绑定社保卡跟家人)

  • 荣耀30pro支持多少倍变焦(荣耀30pro支持多少刷新率)

    荣耀30pro支持多少倍变焦(荣耀30pro支持多少刷新率)

  • 11promax充电充的80不动了(iphone11pro max充电到80就不充了)

    11promax充电充的80不动了(iphone11pro max充电到80就不充了)

  • qq字符vir是什么意思(qqviraha字符)

    qq字符vir是什么意思(qqviraha字符)

  • 微信视频号每个人都有吗(微信视频号每个视频浏览量有多少个)

    微信视频号每个人都有吗(微信视频号每个视频浏览量有多少个)

  • 7p手机发烫严重是因为什么(7p手机发烫严重怎么回事)

    7p手机发烫严重是因为什么(7p手机发烫严重怎么回事)

  • 抖音app上面能不能卖酒?(抖音的app在哪儿)

    抖音app上面能不能卖酒?(抖音的app在哪儿)

  • 微信录制小视频没声音(如何微信录制小视频)

    微信录制小视频没声音(如何微信录制小视频)

  • 潜望式变焦是什么意思(潜望式变焦和数码变焦)

    潜望式变焦是什么意思(潜望式变焦和数码变焦)

  • 选中的朋友可见对方知道吗(选中的朋友可见,是不是就那一个人可见)

    选中的朋友可见对方知道吗(选中的朋友可见,是不是就那一个人可见)

  • 华为备份恢复只能用wifi吗(华为恢复备份是否会覆盖现在的数据)

    华为备份恢复只能用wifi吗(华为恢复备份是否会覆盖现在的数据)

  • 30米网线影响网速吗(网线300米可以用吗)

    30米网线影响网速吗(网线300米可以用吗)

  • 佳能打印机恢复键在哪(佳能打印机恢复取消按钮在哪)

    佳能打印机恢复键在哪(佳能打印机恢复取消按钮在哪)

  • 小红书为什么老是闪退(小红书为什么老是登陆已过期)

    小红书为什么老是闪退(小红书为什么老是登陆已过期)

  • 怎么修改图片位置(图片位置怎么调)

    怎么修改图片位置(图片位置怎么调)

  • 苹果x换过屏是不是没有面容id(苹果x换屏是不是原装的)

    苹果x换过屏是不是没有面容id(苹果x换屏是不是原装的)

  • realme是谁的子品牌(realme是哪个公司生产的)

    realme是谁的子品牌(realme是哪个公司生产的)

  • 小米max2支持nfc吗(小米MAX2支持一键换机吗)

    小米max2支持nfc吗(小米MAX2支持一键换机吗)

  • 荣耀20多少寸(荣耀80pro直屏版上市时间)

    荣耀20多少寸(荣耀80pro直屏版上市时间)

  • 家里路由器怎么改密码(家里路由器怎么控制家庭路由器)

    家里路由器怎么改密码(家里路由器怎么控制家庭路由器)

  • 每月计提什么费用
  • 国际重复征税的前提条件是
  • 资产组可收回金额包含商誉吗
  • 美元利息结汇时结汇项目是什么
  • 装卸搬运的设备有哪些类型
  • 政府返还的增值税怎么算
  • 产品售后维修产品介绍
  • 公户转私户的钱几天能到账
  • 协会会费收入会计科目
  • 境外保险是什么意思
  • 补记以前年度收入在报表中怎么处理
  • 待转销项税额如何列报
  • 哪些业务不需要进行平行记账
  • 收据大写要写整吗
  • 未抵扣完的进项税计入待抵扣
  • 房地产开发企业的土地使用权计入哪里
  • 研发支出期末列报
  • 误餐费怎么入账
  • windows 11密钥
  • 华为最新款手机2023款
  • 常见转移支付事项有哪些情况
  • 物权请求权是什么意思
  • win11预览版更新界面
  • 鸿蒙系统快捷键
  • php中的变量都以什么开头
  • 发放职工工资计入什么会计科目
  • 核定征收的小规模纳税人要做账吗
  • 收到原材料投资怎么做账
  • 退回的企业所得税怎么做账
  • 废旧物资处理怎么入账
  • 机关事业单位体检费用标准规定
  • css盒子如何居中
  • php删除元素
  • vue vif
  • 树莓派能干什么
  • vue要掌握哪些知识?
  • 出口没有增值税发票需要交税吗
  • 逐步结转分步法和平行结转分步法
  • 旅游景点的门票能做费用吗
  • 增值税小规模纳税人适用3%征收率
  • 其他收益在利润表中的位置
  • 没有发票的福利支出如何入帐
  • 税款所属期止
  • 个人所得税减免项目有哪些
  • sql按照日期范围查询
  • 小规模纳税人会自动转为一般纳税人
  • 车子上公司户和个人户哪个更好
  • 增值税发票抵扣联丢失怎么办
  • 待报解预算收入什么意思
  • 有限合伙企业中谨慎有限合伙人的应当
  • 产品因质量问题换新质保期如何计算
  • 企业增加实收资本的途径不包括
  • 原告起诉被告承担诉讼费
  • 生产的半成品怎么做分录
  • 外贸企业怎么开出口发票
  • 商品库存明细账
  • solaris syslog
  • ubuntu搜索已安装软件
  • centos部署django项目
  • win10一年更新一次
  • iis7.0是什么
  • 2016年Win10 Mobile红石更新抢先看 预期新功能/发布时间表
  • win8.1怎么重新装系统
  • cocos2dx开发鸿蒙app
  • codeblocks视频教程
  • linux快速启动终端
  • 很不错的词语
  • jquery中的siblings方法
  • linuxssh免密登录
  • javascript的if
  • nodejs快速入门
  • 安卓系统引导程序
  • 利用python中的运算符可以编程解决你身边的哪些问题
  • 编程 delphi
  • 税务局验证码
  • 税务局解决户口吗
  • 常州车辆过户手续办理
  • 贵州银行短信服务怎么开通
  • 表彰税务工作者们的活动策划
  • 天津市网签查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设