前端鼠标拖拽图片、滚轮放大缩小

//拖拽
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.Left= x1 + offX + "px"; //若x1为正,则鼠标向右移动,设置图片的margin-left为正,向右偏移;为负同理向左偏移。
        svgId.style.Top = 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; },

 注意这里拖动设置的位置是Left、Top,所以该图片所在的样式必须包含:

position: relative;

 

posted @ 2022-02-14 10:26  点终将连成线  阅读(910)  评论(0编辑  收藏  举报