图片在鼠标位置以数遍滚轮滚动放大缩小

图片在鼠标位置以数遍滚轮滚动放大缩小

1、元素距离浏览器左边的间距求解`
getOffsetLeft: function(obj) {
      var tmp = obj.offsetLeft;
      var val = obj.offsetParent;
      while (val != null) {
        tmp += val.offsetLeft;
        val = val.offsetParent;
      }
      return tmp;
    },
2、元素距离浏览器顶端的间距求解
getOffsetTop: function(obj) {
      var tmp = obj.offsetTop;
      var val = obj.offsetParent;
      while (val != null) {
        tmp += val.offsetTop;
        val = val.offsetParent;
      }
      return tmp;
    },
注意:offsetLeft和offsetTop是针对父元素
3、鼠标滚轮事件
scroll: function(e) {
      let frame = document.getElementById("annotation-frame");
      if (frame == null) return;
      let offleft = this.getOffsetLeft(frame);
      let offTop = this.getOffsetTop(frame);
      let left = e.clientX - offleft;
      let top = e.clientY - offTop;
      e.preventDefault();
      image.position.x -= (left-image.position.x)*(0.25/oldScaleSize)
      //鼠标距离图片最左边的距离 算出上一次放大增大的宽度  但又保持鼠标位置不变 所以在原有的位置减去每次增大
      image.position.y -= (top-image.position.y)*(0.25/oldScaleSize)
      //同理
},
/*image.position.x和y
代表image的x轴y轴坐标,
0.25自己规定的每次放大倍数
oldScaleSize上一次的放大倍数比如1.25,1.5*/
4、火狐和谷歌的鼠标滚轮事件是不同的,
function addMouseWheelEvent(element,func) {
   if (typeof element.onmousewheel == "object") {
      element.onmousewheel = function() {
        func();
     };
   }
   if (typeof element.onmousewheel == "undefined") {
      element.addEventListener("DOMMouseScroll",func,false);
   }
 }
5、vue中的鼠标滚轮
<div class="container-box" @wheel="handleWheel"></div>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值