javascript - 缩放/缩放容器的插值坐标

标签 javascript css

使用 CSS 缩放/缩放时,我发现我的某些鼠标处理程序不再按预期工作。我创建了以下 JSFiddle 来解决这个问题:https://jsfiddle.net/2wb82x93/1/ .一个框将跟随您的鼠标。当您缩放包装器(使用按钮)时,框仍然跟随您的鼠标,但具有偏移量和不同的速度。这是有道理的:我们根据非缩放坐标平移框。

代码大致如下:

HTML

<div class="sub">
    <div class="container"></div>
</div>

Javascript:

$(document).ready(function(){
  var offset = $('div.sub').offset();
  $('div.sub').mousemove(function(e){
      var x = e.pageX;
      var y = e.pageY;
      $('div.container').css({
        'left': x - offset.left,
        'top':  y - offset.top
      }); 
  });
});

然后我们缩放/缩放子 div。

是否有可能检索/计算内插坐标?或者用另一种方法来修复此代码?

最佳答案

我通过手动计算元素的缩放量解决了这个问题,然后用我的坐标偏移量除以这个缩放因子。

首先,我创建了以下递归函数,它接受一个元素并计算对该元素应用的缩放。

function calculateZoom(element) {
  var ownZoom = parseFloat(element.style.zoom || 1);
  if(element !== document.body) {
    ownZoom *= calculateZoom(element.parentElement);
  }
  return ownZoom;
}

然后在我的鼠标事件处理程序中,我将偏移量除以计算值:

function mousehandler(element) {
  var relxpos = Math.round(event.pageX / this.zoomFactor) - this.center.left,
      relypos = Math.round(event.pageY / this.zoomFactor) - this.center.top;
  // Do computation with relxpos and relypos
}

当拖动这些值时,元素在缩放元素中也会停留在光标上!

关于javascript - 缩放/缩放容器的插值坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29560607/

相关文章:

javascript - 沿着矩形边界的进度条

javascript - 如何访问闭包内的 "this"?

javascript - For 循环和数组问题 - ngRepeat

javascript - 为模板中的变量赋值 - Angular7

html - 试图复制表格图像

css - 我可以用类定义覆盖#id ul li 行为吗

html - 修复时事通讯代码以在 Outlook 中正常工作

CSS 中类似于 Android ICS 的输入字段

javascript - 如何使用 JavaScript 连接我的 CSS 和 HTML

asp.net - 从 asp.net 页面启动 javascript