イメージが大きすぎるため、ブラウザウィンドウでスクロール可能にしたい。スクロールは、a)スクロールバー経由で、b)マウス操作による2つの方法で動作します。後者の場合は、希望の方向に画像をドラッグするのと同じように動作するはずです。そこで私はスクリプトを作り、それを画像に添付しました。コードは正しく見えますが、正しく動作しません。画像が消えたり、望ましくない位置にジャンプしたりすることがあります。あなたはjavascriptでイメージムーバーが正常に動作しない
下のスクリプトを呼び出すことができますし、コードが装着されています。誰かが画像の飛び降りの理由を知っていますか?私は答えを受け取ってうれしいです。
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<img src="schloss.jpg" id="image" />
<script>
var div=document.getElementById('image');
var iwidth,iheight,oldY,oldX,newX, newY;
var mouseisdown=false;
div.addEventListener('load', function() {
iwidth=this.naturalWidth;
iheight=this.naturalHeight;
});
function getCoordinates(elem) {
var LeftPos = elem.offsetLeft;
var TopPos = elem.offsetTop;
return {X:LeftPos,Y:TopPos};
}
function addListeners() {
div.addEventListener('mousedown', mouseDown, false);
div.addEventListener('mouseup', mouseUp, false);
window.addEventListener('mousemove', divMove, false);
var p=getCoordinates(div);oldX = p.X;oldY = p.Y;
}
function mouseUp() {
mouseisdown=false;
}
function mouseDown() {
mouseisdown=true;
}
function divMove(e){
if (mouseisdown) {
div.style.position = 'absolute';
newY=e.clientY-oldY;
newX=e.clientX-oldX;
div.style.top = newY + 'px';
div.style.left = newX + 'px';
oldY=newY;
oldX=newX;}
}
addListeners();
</script>
</body>
</html>
OK、私はコードを修正しましたが、それでも正常に動作します。マウスを押したまま画像を動かすことはできません - あらかじめマウスをクリックして後に移動する必要があります。 – JensD
@ JensD、あなたのコードを修正した場合、これを正しい答えとしてマークするか、より良い答えをあなた自身が提供することができます。 – lilezek
@lilizek最初の分析に感謝しました。これは非常に役に立ちました。私は後でより良いコードで戻ってきます。 – JensD