这个标题听起来有点令人困惑吗?无论如何我觉得它可能会很好。
当我点击页面时,我希望他们能够让我更短,更长。
你可以在这里看到我的意思:
http://jsfiddle.net/shawn31313/HKLhE/9/show/
做一个Mousedown,他们将你的举动向右移动。它工作正常。 但现在,将鼠标移到左侧。看到问题?它与向右拖动时的方向相同。我知道这是因为我使用宽度和明显的宽度是单向的。
到目前为止,这是我的代码:
$(document).ready(function() {
var dragStatus = 0,
getPos, giveRandomID;
$(document).mousedown(function(event) {
dragStatus = 0;
getPos = {
top: event.clientY,
left: event.clientX
};
giveRandomID = Math.floor(Math.random() * 99999);
});
$(document).mousemove(function() {
var line = $('#line' + giveRandomID);
if (dragStatus == 0) {
$('body').append("<div id='line" + giveRandomID + "' class='line' style='position:absolute;top:" + getPos.top + "px;left:" + getPos.left + "px;background:black;width:2px;height:5px'></div>");
dragStatus = 1;
}
if (dragStatus == 1) {
if (event.clientX > line.offset().left) {
line.css({
width: event.clientX - line.offset().left
});
} else {
line.css({
width: line.offset().left - event.clientX
});
}
//for DEG "-" Top-Math.abs(DEG*2) for Deg "+" Top+(DEG*2)
}
});
$(document).mouseup(function() {
dragStatus = 2;
});
});
我希望有人可以帮我解决这个问题。也许是一种完全不同的方式来设置它。只是解决这个问题的东西
答案 0 :(得分:2)
要使线条向左伸展,您必须更新left
属性:
if (event.clientX > getPos.left) {
line.css({
left: getPos.left,
width: event.clientX - getPos.left
});
} else {
line.css({
left: event.clientX,
width: getPos.left - event.clientX
});
}
jsFiddle:http://jsfiddle.net/HKLhE/16/
答案 1 :(得分:1)
您需要修改else
案例(向右移动)以将left
属性设置为auto
,将right
属性设置为初始鼠标单击X位置。当向左移动时与offset().left
相比将无效,因为该值正在发生变化。
尝试这个尺寸:
编辑:Brilliand的解决方案更加优雅。