通常、プラグインは多くの不要な機能を追加し、プロジェクトのサイズを大きくするため、些細な問題に対して独自のソリューションを作成することを好みます。サイズによってページが遅くなり、1 日あたり 100,000 ページビューの Web サイトで 30,000 の違い (jquery ドラッグ可能と比較して) は、請求書に大きな違いをもたらします。私はすでにjqueryを使用していますが、今のところ必要なのはそれだけだと思います。別のプラグインやフレームワークを使用して物事をドラッグするように言わないでください.
それを念頭に置いて、ボックスをドラッグできるようにするために、次のコードを書きました。コードは問題なく動作します (コード自体に関するヒントは大歓迎です) が、ちょっとした不具合がありました。
ボックスをブラウザの右端限界までドラッグすると、水平スクロール バーが表示され、ボックスが原因でウィンドウの幅が大きくなります。望ましい動作は、水平スクロール バーを表示しないことですが、ウィンドウのウィンドウのように、ウィンドウ領域の外にボックスの一部を配置できるようにすることです。
任意のヒント?
CSS:
.draggable {
position: absolute;
cursor: move;
border: 1px solid black;
}
Javascript:
$(document).ready(function() {
var x = 0;
var y = 0;
$("#d").live("mousedown", function() {
var element = $(this);
$(document).mousemove(function(e) {
var x_movement = 0;
var y_movement = 0;
if (x == e.pageX || x == 0) {
x = e.pageX;
} else {
x_movement = e.pageX - x;
x = e.pageX;
}
if (y == e.pageY || y == 0) {
y = e.pageY;
} else {
y_movement = e.pageY - y;
y = e.pageY;
}
var left = parseFloat(element.css("left")) + x_movement;
element.css("left", left);
var top = parseFloat(element.css("top")) + y_movement;
element.css("top", top);
return false;
});
});
$(document).mouseup(function() {
x = 0;
y = 0;
$(document).unbind("mousemove");
});
});
HTML:
<div id="d" style="width: 100px; left: 0px; height: 100px; top: 0px;" class="draggable">a</div>