よし、来たぞ。
スクリプト:
window.onload = function () {
var AniMove = function (doc, element) {
var ox, oy, mx, my,
w = element.offsetWidth,
mouseMove = function (e) {
e.preventDefault();
if (element.offsetLeft + 0.4 * w > window.innerWidth) {
// 60% of the element's width is outside of the window now... do something
return;
}
element.style.left = element.offsetLeft + e.clientX - mx + 'px';
element.style.top = element.offsetTop + e.clientY - my + 'px';
mx = e.clientX;
my = e.clientY;
return false;
},
mouseUp = function () {
doc.removeEventListener('mousemove', mouseMove);
doc.removeEventListener('mouseup', mouseUp);
return;
},
mouseDown = function (e) {
ox = mx = e.clientX;
oy = my = e.clientY;
doc.addEventListener('mousemove', mouseMove, false);
doc.addEventListener('mouseup', mouseUp, false);
return;
};
element.addEventListener('mousedown', mouseDown, false);
},
drag = new AniMove(document, document.getElementById('square'));
}
そしてHTML:
<div id="square"></div>
最後に CSS:
DIV {
position: fixed;
width: 100px;
height: 100px;
background: #f00;
}
すべてが完了すると、jsFiddle にデモがあります。このスニペットに必要な情報がすべて含まれていることを願っています。