前端图片拖拽,滚轮放大缩小

拖拽

var  offX = 0,
    offY = 0;
onMouseDown(ev) {
      var svgId = document.getElementById("svgId");
      svgId.style.cursor = "move";
      ev.preventDefault(); //阻止浏览器动作,有些浏览器试图拖拽图片的时候,是会把图片单独到一个页        
                            //面来查看的。
      var oevent = ev || event; //兼容性处理   firefox/google
      var distanceX = oevent.clientX; //记录鼠标点击x位置
      var distanceY = oevent.clientY; //记录鼠标点击y位置
      document.onmousemove = function (ev) {
        var oevent = ev || event;
        var x1 = oevent.clientX - distanceX; //oevent.clientX是鼠标移动到的x位置,    oevent.clientX-distanceX是移动的距离
        var y1 = oevent.clientY - distanceY;
        distanceX = oevent.clientX; //更新distanceX的位置信息。
        distanceY = oevent.clientY;
        svgId.style.marginLeft = x1 + offX + "px"; //若x1为正,则鼠标向右移动,设置图片的margin-left为正,向右偏移;为负同理向左偏移。
        svgId.style.marginTop = y1 + offY + "px"; 
//offX和offY为前一次的偏移,本次移动是在前一次的基础上发生的,
//要加上偏移值才是鼠标本次移动后图片的位置。
        offX = x1 + offX; //记录此时图片的偏移位置
        offY = y1 + offY;
      };
      document.onmouseup = function () {
        svgId.style.cursor = "default";
        document.onmousemove = null;
      };
    },

滚轮放大缩小

onMouseWheel(ev) {
      var svgId = document.getElementById("svgId");
      var down = true; // 定义一个标志,当滚轮向下滚时,执行一些操作
      down = ev.wheelDelta < 0 || ev.detail > 0 ? true : false;

      if (down) {
        if (this.scal >= 2) {
          this.scal = 2;
          svgId.style.transform = "scale(" + this.scal + ")";
          //svgId.style.transformOrigin = "0 0";
          return;
        } else {
          this.scal += 0.1;
          //console.log("放大系数: " + this.scal);
          if (this.scal <= 2 && this.scal >= 0.3)
            svgId.style.transform = "scale(" + this.scal + ")"; //scale()在这里要使用拼接                                                                                                                                                                    
                                                                 //的方式才能生效
        }
      } else {
        if (this.scal <= 0.3) {
          this.scal = 0.3;
          svgId.style.transform = "scale(" + this.scal + ")";
          return;
        } else {
          this.scal -= 0.1; // (parseFloat(this.scal) - 0.1).toFixed(2);
        }
        //console.log("缩小系数: " + this.scal);
        svgId.style.transform = "scale(" + this.scal + ")";
        //svgId.style.transformOrigin = "0 0";
      }
      // if (ev.preventDefault) {
      //   /*FF 和 Chrome*/
      //   ev.preventDefault(); // 阻止默认事件
      // }
      // return false;
    },

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值