1.封装可放大缩小拖拽组件

<template><div class="drag-outer"ref="dragWrap":style="'width:'+imgWidth"@mouseenter="isHover = true"@mouseleave="isHover = isMousedown = false"@mousemove="dragMousemove"><div class="drag-inner"ref="dragElement"@mousedown="dragMousedown"@mouseup.stop="isMousedown = false"><slot></slot></div></div>
</template><script>export default {name: "index",props: {imgWidth: {type:String,default () {return '400px'}},scaleZoom: {type: Object,default () {return {max: 5,min: 0.2}}}},data() {return {isMousedown: false,isHover: false,moveStart: {},translate: {x: 0, y: 0},scale: 1}},mounted() {window.addEventListener('mousewheel',this.handleScroll,false)},methods: {handleScroll(e) {if (this.isHover) {let speed = e.wheelDelta / 120if (e.wheelDelta > 0 && this.scale < this.scaleZoom.max) {this.scale += 0.2 * speedthis.$refs.dragElement.style.transform = `scale(${this.scale}) translate(${this.translate.x}px, ${this.translate.y}px)`} else if (e.wheelDelta < 0 && this.scale > this.scaleZoom.min) {this.scale += 0.2 * speedthis.$refs.dragElement.style.transform = `scale(${this.scale}) translate(${this.translate.x}px, ${this.translate.y}px)`}}},dragMousedown() {this.moveStart.x = event.clientXthis.moveStart.y = event.clientYthis.isMousedown = true},dragMousemove() {if (this.isMousedown) {this.translate.x += (event.clientX - this.moveStart.x) / this.scalethis.translate.y += (event.clientY - this.moveStart.y) / this.scalethis.$refs.dragElement.style.transform = `scale(${this.scale}) translate(${this.translate.x}px, ${this.translate.y}px)`this.moveStart.x = event.clientXthis.moveStart.y = event.clientY}}}}
</script><style lang="scss" scoped>.drag-outer {overflow: hidden;height:500px; float: left;display: flex;background-color:#fff;justify-content: center;align-items: center;.drag-inner {transform-origin: center center;display: flex;justify-content: center;align-items: center;cursor: move;user-select: none;width:100%;height:100%;>* {-webkit-user-drag: none;user-drag: none;}img{object-fit:contain; width:100%; height:100%}}}
</style>

2.引用组件实现效果

<template><div><inc_imgsvg v-if="srcImg" :imgWidth="'100%'"><img :src="srcImg" alt=""></inc_imgsvg></div>
</template><script>
import inc_imgsvg from "@/components/customImg/index";
export default {name: "index",components: {inc_imgsvg},data(){return{srcImg:'https://xxx.png'}}
}
</script>

vue实现鼠标滚动图片放大缩小拖拽相关推荐

  1. vue 实现图片放大缩小拖拽

    https://www.h5w3.com/239173.html https://blog.51cto.com/wjw1014/5411219 // 放大缩小public setTransform ( ...

  2. canvas 实现图片放大缩小拖拽 移动端、PC端

    前言 实现目标:使用canvas画出地图,且可以通过鼠标滚轮缩放,拖拽:手指滑动拖拽,手势缩放 drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dW ...

  3. Vue实现图片预览(放大缩小拖拽)纯手写

    这张图是显示的图片放大的一个预览情况,这里是参考预览操作实现的一个背景为黑色的部分,上层的图片可实现滚轮放大或者点击上部的放大镜图标进行放大,代码是基于Ant Design Vue框架的基础上 这里先 ...

  4. 基于Vue Konva的canvas图片放大缩小

    最近一个项目要实现图片根据鼠标位置多级放大缩小的功能,在网上找了好久的资源没有找到,偶然看到了一篇文章,但是没有完整的代码,研究了两天把代码补全了,其实也不难,但是困扰了我好几天,这个方法相对于网上别 ...

  5. 关于viewer.js插件js版鼠标滚动事件放大缩小改为图片移动

    主要是为了记录下需求中解决问题的思路,本人前端相当糟糕. 问题的产生是由于图片太长,页面一次性展示不全,业务人员提出修改前端图片显示中的鼠标滚动改为上下移动.由于项目中图片展示使用的是viewer,j ...

  6. 【quill-editor】富文本编辑器对图片的放大缩小拖拽的实现

    首先哈,quill-editor没有对图片的功能,文档里也有提到扩展模版 文档: 回归正题=> 1.安装模版 npm i quill-image-drop-module -S //拖拽 npm ...

  7. 鼠标滚动导航放大缩小

    进入页面的样式 鼠标向下的样式 滚轮向上还是可以变大,直接上代码, <!DOCTYPE html> <html lang="zh-CN"> <head ...

  8. js 实现 H5 div的内容 放大缩小拖拽功能 vue可用

    大佬写的组件 , 虽然我看不懂 但不妨碍我会用啊 想去看大佬代码的点这里 下面的无脑的代码时刻 一.复制代码到一个单独的.vue文件然后 走人去下一步 // 放大缩小页面组件 <template ...

  9. bootstrap缩小后div互相叠加_纯 JS 实现放大缩小拖拽踩坑之旅

    点击上方"前端公虾米",选择"置顶或者星标" 你的关注意义重大! 前言 最近团队需要做一个智能客服悬浮窗功能,需要支持拖动.放大缩小等功能,因为这个是全局插件, ...

最新文章

  1. 用window.open时能否通过post方式传输数据?
  2. 容器与微服务从技术到艺术 你需要这场论坛
  3. 从windows到linux的换行转换工具dos2unix
  4. 关于LoginFilter的问题
  5. zip、gz压缩文件查看命令zless、less
  6. nlv sqlserver_未能使用提供程序“DataProtectionConfigurationProvider”进行解密。提供程序返回错误消息为: 该项不适于在指定状态下使用...
  7. nodejs随记04
  8. linux系统遵循以下哪项协议,实务(互联网技术)通信工程师考试习题库
  9. 数据库类型少_DELETE与DROP 在数据库中的使用方法和区别
  10. curl查看swift状态命令_微服务之——docker高级命令
  11. 没有朋友,一个人旅行是什么感受?
  12. underscorejs-min学习
  13. 移动云招聘,加入我们,搞点大事~
  14. 各种数据集汇总——转载而来
  15. 计算机图形学——计算机图形系统及硬件基础
  16. 三洋p6系列伺服电机说明书_FCA-520京津冀供货商,全系列销售
  17. 散列表(Hash表)
  18. CryEngine3 调试Shader方法
  19. 香港云服务器网站打开缓慢,香港云服务器搭建的网站卡慢怎么办?火星直播
  20. 【实战篇】40 # 如何实现3D地球可视化?

热门文章

  1. 云计算发展与政策论坛第四次会议召开
  2. Detours学习之十:用于查找目标函数的api
  3. 什么蓝牙耳机好用?音质好佩戴舒适蓝牙耳机推荐
  4. 2023计算机毕业设计SSM最新选题之java中国饮食文化网站l55z5
  5. 微信的内容布局已经甩了百度、阿里和今日头条3条街
  6. VS2017的怪问题--错误: 未能完成操作。未指定的错误
  7. 王道考研408 数据结构 2.3 链表练习题
  8. c#,将pdf文件转换成图片文件
  9. fps游戏枪口无后座的原理和实现
  10. Linux之父炮轰C++:糟糕程序员的垃圾语言