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

  • 品牌宣传你需要专注品牌自身的三个原因(品牌需要宣传推广)

    品牌宣传你需要专注品牌自身的三个原因(品牌需要宣传推广)

  • win11任务管理器快捷键(win11任务管理器进程不显示gpu)

    win11任务管理器快捷键(win11任务管理器进程不显示gpu)

  • 微信运动会出错吗(微信运动会出错吗?早上起来显示走过4000多步)

    微信运动会出错吗(微信运动会出错吗?早上起来显示走过4000多步)

  • 华为手机可以当门禁卡使用吗(华为手机可以当电视遥控器吗)

    华为手机可以当门禁卡使用吗(华为手机可以当电视遥控器吗)

  • 抖音里的画中画视频是怎么合成的(抖音里的画中画怎么做的)

    抖音里的画中画视频是怎么合成的(抖音里的画中画怎么做的)

  • 华为p40怎么返回上一步(华为p40怎么返回上一层)

    华为p40怎么返回上一步(华为p40怎么返回上一层)

  • 小米10自带的膜是什么膜(小米10自带的膜要撕掉吗)

    小米10自带的膜是什么膜(小米10自带的膜要撕掉吗)

  • 手机qq被禁言怎么强制聊天(手机qq禁言怎么解除)

    手机qq被禁言怎么强制聊天(手机qq禁言怎么解除)

  • 淘气值下降是降权吗(淘气值下降了还能升回来吗)

    淘气值下降是降权吗(淘气值下降了还能升回来吗)

  • 邮件撤回失败对方能看到吗(邮件撤回失败对方已经阅读邮件了吗?)

    邮件撤回失败对方能看到吗(邮件撤回失败对方已经阅读邮件了吗?)

  • iphone降级后数据还在吗(苹果降级了还有资料吗)

    iphone降级后数据还在吗(苹果降级了还有资料吗)

  • 美团会员可以在不同城市使用吗(美团会员可以在一家店同一天兑换券吗)

    美团会员可以在不同城市使用吗(美团会员可以在一家店同一天兑换券吗)

  • skw-a0是什么手机机型(skrao是什么手机型号)

    skw-a0是什么手机机型(skrao是什么手机型号)

  • 声卡在主板的什么位置(主板 声卡)

    声卡在主板的什么位置(主板 声卡)

  • ipad如何设置开盖唤醒(ipad如何设置开盖亮屏幕)

    ipad如何设置开盖唤醒(ipad如何设置开盖亮屏幕)

  • 怎么看有几个人特别关心我(b站怎么看有几个人)

    怎么看有几个人特别关心我(b站怎么看有几个人)

  • 2019微博访客怎么查(微博访客功能)

    2019微博访客怎么查(微博访客功能)

  • 小米手环4nfc睡眠怎么检测(小米手环4nfc可以关机吗)

    小米手环4nfc睡眠怎么检测(小米手环4nfc可以关机吗)

  • vivo手机更改图标外观(vivo手机更改图标大小)

    vivo手机更改图标外观(vivo手机更改图标大小)

  • iphonexmax屏幕按不动(苹果xsmax怎么感觉屏幕按的不是很灵敏)

    iphonexmax屏幕按不动(苹果xsmax怎么感觉屏幕按的不是很灵敏)

  • mac双系统怎么删除一个?苹果mac双系统删除win7方法图文步骤(mac双系统怎么删除win系统)

    mac双系统怎么删除一个?苹果mac双系统删除win7方法图文步骤(mac双系统怎么删除win系统)

  • 【Echarts】在html中引入echarts详细步骤教程【源码】(echarts css)

    【Echarts】在html中引入echarts详细步骤教程【源码】(echarts css)

  • 企业自建房产缴契税吗
  • 进项税转出会计分录如何做
  • 同一控制下的长期股权投资入账成本
  • 电子税务局财务报表在哪里查询
  • 小规模普票专票税率一样吗
  • 汇算清缴退税可以不退吗
  • 所得税费用和应交税费的关系
  • 设备维修增值税
  • 法院拍卖土地欠土地使用税
  • 收到第三方利息会计分录
  • 劳务公司民工工资可以抵进项吗
  • 减免税款期末有余额吗
  • sd标准差是什么意思
  • 福利费用属于什么费用
  • 公益组织接受捐赠怎么开票
  • 纳税人购买税控设备抵扣问题
  • 收据怎么写比较规范
  • ghost读不出硬盘
  • win7系统的系统配置里设置开机启动项
  • 出口退税是怎么退
  • 什么是要约的撤销
  • won10字体变大
  • 第三方工具查看对方关注抖音
  • 如何在win11上安装旧版ie
  • 代扣代缴的增值税算进项税吗
  • 支付宝花呗服务费收费标准
  • 提坏账准备的调整分录
  • 同业拆入属于哪个行业
  • transit code
  • PHP:is_dir()的用法_Filesystem函数
  • uniapp仿微信
  • 允许税前扣除的税金
  • PHP:imagedestroy()的用法_GD库图像处理函数
  • 企业发生的利得或损失应计入企业的营业外收支
  • 开发成本属于哪个会计准则
  • pythonnetworkx
  • 机器学习——感知机
  • php execute函数
  • css代码怎么在浏览器运行
  • 四舍五入的弊端
  • 固定资产一次性扣除政策
  • mongo创建db
  • 汇算清缴没有调整怎么办
  • 无偿调入资产如何做账
  • sqlserver数据库作业
  • 典当行借款合同需交印花税吗
  • 印花税凭证名称如何选择
  • 年末未分配利润计算公式
  • 保险费用缴纳
  • 没有发票意味着什么
  • 固定资产如何抵扣进项税额
  • 工程安装公司注册条件
  • 行政事业单位计提工资怎么做账
  • 保险公司理赔时会查多久的病史
  • 固定资产一次性扣除账务处理
  • 如何查企业是否有问题
  • mysql5.7对应的jdbc
  • sql语句如何将一列数据值相加
  • 深度Win7 64位系统默认输入法图标如何个性化设置
  • 如何解决工作
  • centos7.4修改主机名
  • centos启动不了图形界面
  • macbook调节音量怎么没反应
  • windows.h在linux中
  • win7打印错误怎么解决
  • win8系统崩溃无法开机
  • windows10总是提醒更新
  • w7系统序列号怎么查
  • html5画布五角星
  • 最新推荐美剧
  • python二级怎么出题
  • js怎么获取密码框内容
  • javascript的核心组成部分
  • 黄金消费税税率是多少
  • 怎么向税局举报
  • 专用缴款书会计分录
  • 2016年小微企业所得税优惠政策文号
  • 一般纳税人做账收费标准
  • 代理记账公司简介模板范文
  • 徐州市哪些区域有疫情
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设