【问题标题】:How do I pull out a selection And it shows the size of the region我如何拉出一个选择它显示了区域的大小
【发布时间】:2019-08-20 03:01:15
【问题描述】:

要让鼠标拉出一个选择范围,选择后松开鼠标,在这四个字段中显示选中区域的X-axisY-axiswidthheight的值。

这是我的问题。我希望你能帮助我。谢谢。

【问题讨论】:

  • 发布你的js或者playground、sandbox等

标签: javascript jquery node.js user-interface


【解决方案1】:

我为一种可能的解决方案创建了小型 codepen,您需要根据您的情况对其进行调整。

Coepen Select Area

let isDragging = false;
const startArr=[];
document.getElementById('target_element').addEventListener('mousedown', function(e){
  startArr[0] = e.offsetX;
  startArr[1] = e.offsetY;
  isDragging=true
})

const currentArr=[]
document.getElementById('target_element').addEventListener('mousemove', function(e){
  if (isDragging){
    currentArr[0] = e.offsetX;
    currentArr[1] = e.offsetY;

    const dimensions = getDimensions(startArr, currentArr);
    const parentElement = document.getElementById('target_element');
    parentElement.innerHTML = '';
    const selectWindow = document.createElement('div');
    selectWindow.style.position = 'absolute';
    selectWindow.style.height = dimensions.h+'px';
    selectWindow.style.width = dimensions.w+'px';
    selectWindow.style.top = dimensions.y+'px';
    selectWindow.style.left = dimensions.x+'px';
    selectWindow.style.backgroundColor = 'blue';
    parentElement.appendChild(selectWindow);
    currentArr.length = 0;
  }
})
const finishArr=[];
document.getElementById('target_element').addEventListener('mouseup', function(e){
  if (isDragging){
    finishArr[0] = e.offsetX;
    finishArr[1] = e.offsetY;

    const dimensions = getDimensions(startArr, finishArr);
    document.getElementById('x').innerText = dimensions.x;
    document.getElementById('y').innerText = dimensions.y;
    document.getElementById('w').innerText = dimensions.w;
    document.getElementById('h').innerText = dimensions.h;
    isDragging=false;
  }
})
function getDimensions(startingPoint, finishPoint){
  const top = Math.min(startingPoint[1], finishPoint[1]);
  const bottom = Math.max(startingPoint[1], finishPoint[1]);
  const left = Math.min(startingPoint[0], finishPoint[0]);
  const right = Math.max(startingPoint[0], finishPoint[0]);
  return {
    x: left,
    y: top,
    w: right-left,
    h: bottom-top
  }
}

【讨论】:

  • 谢谢你的方法,对我帮助很大!这就是我想要达到的目标!
  • 首先感谢您的回复!如果你想让对象拖动和移动,你怎么写?附言。想了很多天不知道怎么实现!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
相关资源
最近更新 更多