我想创建div
元素,其行为类似于在Windows桌面上单击和拖动。
到目前为止,我的代码执行以下操作:
我的问题是调整大小部分。目前,div只能在东南方向上扩展。
请参阅此Fiddle示例。
试听Fiddle示例以了解我的意思(例如,不能垂直扩展到原点之外)。
我认为原因是因为newX
和newY
为负值。我该怎么解决?
答案 0 :(得分:2)
您还没有考虑过鼠标移动坐标小于绘图开始坐标的情况,我对JS代码做了一些修改,
var clientBox = document.getElementById("userBox");
var startX, startY, currentX, curentY;
function initRect(event) {
startX = event.clientX;
startY = event.clientY;
window.addEventListener("mousemove", drawRect);
window.addEventListener("mouseup", dstryRect);
}
function drawRect(event) {
var width = event.clientX-startX;
var height = event.clientY-startY;
var x = startX;
var y = startY;
if (width < 0) {
x = startX + width;
width=-width;
}
if (height < 0) {
y = startY + height;
height = -height;
}
clientBox.style.display = "block"; // Hideen until click detected
clientBox.style.top = y + "px";
clientBox.style.left = x + "px";
clientBox.style.width = width + "px";
clientBox.style.height = height + "px";
}
function dstryRect() {
window.removeEventListener("mousemove", drawRect);
window.removeEventListener("mouseup", dstryRect);
clientBox.style.display = "none";
clientBox.style.height = "0px";
clientBox.style.width = "0px";
}
只需更新JS文件中的这些内容,即可完成。 这是工作中的fiddle 谢谢。