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

  • 增值税申报怎么填写报表
  • 逆回购会不会亏本金
  • 个税由公司承担的账务处理
  • 应交税费应交增值税减免税款
  • 对公账户是不是实时到账
  • 制造费用影响当期损益的科目
  • 房产出租增值税税目
  • 无追索权保理占用谁的额度
  • 财付通转账手续费多少
  • 公司刻一套章子多少钱
  • 一次性筷子的消费税
  • 长期借款业务的思维导图
  • 企业所得税弥补亏损怎么算
  • 工资做账原始凭证是什么
  • 取得土地无形资产的条件
  • 结转增值税的计算公式
  • 增值税税控盘服务费可以每年都抵扣吗
  • 进项税大于销项税是不是不用交税了
  • 工资一定要通过应付工资科目吗
  • mac怎么创建热点
  • 收到投资款怎么处理帐
  • 怎么免费获取百度文库的付费文档
  • 债券到期收回本息的会计分录
  • 怎么安装win7系统u盘
  • config.cfg是什么文件
  • PHP:mcrypt_enc_is_block_algorithm_mode()的用法_Mcrypt函数
  • 预付采购材料货款
  • 其他应收和其他应付可以共用吗
  • 企业注销清算需要交什么税
  • php制作简单的表单代码
  • 有限责任公司股东对公司债务承担
  • 100行php代码实现加密端口转发
  • php获取长度
  • uniapp dom操作
  • bert的原理
  • vue.mixin是什么
  • 公司交社保国家承担吗
  • 承兑汇票贴现利率是怎么算
  • windows 和 linux
  • 年金终值系数表值系数
  • 为客户购买的机票怎么入账
  • 建筑安装个人所得税征收管理办法
  • 专用发票和普通发票 报销
  • 生产企业免抵退税申报步骤
  • 食堂采购原材料怎么在赣溯源备案
  • 研发费用加计扣除的条件
  • 汇算清缴退税怎么回事
  • 原材料不足
  • 融资租赁固定资产折旧年限
  • 厂家给的返利应该怎么做会计分录
  • 开具的增值税专用发票上注明的价款含税吗
  • 公司购买汽车的购置税可以抵税吗
  • 函证核对法是什么
  • 建筑企业营改增之前计税方法
  • 高新技术企业的税收优惠政策
  • jdbc连接mysql数据库步骤
  • xampp修改mysql默认密码的方法
  • T-SQL中使用正则表达式函数
  • mysql索引命令
  • window10用久了都会慢吗
  • linux中使用最多的命令
  • linux怎样使用
  • cocos2d-js-min.js
  • javascript学习指南
  • UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
  • 不用js多浏览器能用吗
  • python中的
  • 简要说明javascript的作用
  • unity删除对象
  • android ashmem
  • 深入解析windows第7版pdf
  • shell生成excel文件
  • shell脚本 -ne 0
  • python中二维列表的定义
  • javascript图片切换代码
  • 金税三期个税下载官网手机版
  • 威科先行法律信息库价格
  • 房地产企业税种认定标准
  • 移动手机话费代扣
  • 广州市地税服务大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设