1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Vue 实现鼠标滚轮缩放图片并拖动

Vue 实现鼠标滚轮缩放图片并拖动

时间:2019-02-28 02:30:10

相关推荐

Vue 实现鼠标滚轮缩放图片并拖动

需求:实现鼠标滚轮上滚下滚缩放图片,单击不松开拖动图片

给图片添加一个盒子

// dom<div @mousewheel.prevent="rollImg" class="box"><img :src="src" class="img" ref="imgDiv" @mousedown="move" /></div>

methods中的代码:

// script// 拖动图片move(e) {// 阻止默认事件e.preventDefault();// 获取元素var boxDom = document.querySelector(".box");var img = document.querySelector(".img");var x = e.pageX - img.offsetLeft;var y = e.pageY - img.offsetTop;// 鼠标移动事件boxDom.addEventListener("mousemove", move);function move(e) {img.style.left = e.pageX - x + "px";img.style.top = e.pageY - y + "px";}// 鼠标抬起移除事件img.addEventListener("mouseup", function () {boxDom.removeEventListener("mousemove", move);});// 鼠标离开移除事件boxDom.addEventListener("mouseout", function () {boxDom.removeEventListener("mousemove", move);});},// 缩放图片rollImg(e) {let transform = this.$refs.imgDiv.style.transformlet zoom = transform.indexOf("scale") != -1 ? +transform.split("(")[1].split(")")[0] : 1zoom += e.wheelDelta / 1200if (zoom > 0.1 && zoom < 5) {this.$refs.imgDiv.style.transform = "scale(" + zoom + ")"}},

CSS样式:

// css.box {position: relative;width: 100%;height: 360px;background-color: rgb(147, 145, 145);// 添加背景图片background-image: url(../../../assets/img/bg.png);background-position: 0 0;float: left;overflow: hidden;}.img {position: absolute;left: 0;top: 0;width: 100%;height: 100%;max-width: 923px;max-height: 460px;cursor: move;}

效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。