私はJavascriptを学び始めており、ユーザーがマウスポインターを使用してボックスを左右に押すことができるスクリプトを作成しようとしています。
ポインタがボックスの左側に触れたときになんとか解決できましたが、ここで2つの問題に直面しています。
- ポインタがボックス内に入ると、ボックスは新しい座標にジャンプします。ポインタがボックス内に入ったときに、ボックスをその位置に保持したい。
- マウスがボックスの右側に触れたとき、私は本当にそれを理解することができません。ボックスを左に押してほしい。私は私を助けるためにbox.offsetRightプロパティを作成しましたが、それを効率的に使用することはできません。
これが私が何を意味するかを示すための写真です:
「X」マークはポインタがある場所です。そして、箱の右側に向かっています。ボックスを左に押す方法は?
これが私がやろうとしたことです(もちろんうまくいきませんでした):
index.html
<html>
<head>
<title>Chase the box</title>
<style>
body {
}
.css-box{
position: absolute ;
top:20px;
width : 100px;
height : 100px;
background-color : blue;
}
.css-textbox{
margin-top: 500px;
}
</style>
</head>
<body>
<div id="box" class="css-box"></div>
<div class="css-textbox">
<p>All : <input id="allTextbox" type="text"></input></p>
<p>Left : <input id="leftTextbox" type="text"></input></p>
<p>Right : <input id="rightTextbox" type="text"></input></p>
<p>e.pageX(Left) : <input id="pageXTextbox" type="text"></input></p>
<p>e.pageX(Right) : <input id="pageXRightTextbox" type="text"></input></p>
</div>
<script type="text/javascript" src="helper.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
script.js
var box = document.getElementById("box");
var allTextbox = document.getElementById("allTextbox");
var leftTextbox = document.getElementById("leftTextbox");
var rightTextbox = document.getElementById("rightTextbox");
var pageXTextbox = document.getElementById("pageXTextbox");
var PageXRightTextbox = document.getElementById("pageXRightTextbox");
Object.prototype.offsetRight = window.innerWidth - (box.offsetWidth + box.offsetLeft);
var pushBox = function(e){
var pageXRight = window.innerWidth - e.pageX;
box.offsetRight = window.innerWidth - (box.offsetWidth + box.offsetLeft);
if (e.pageX >= box.offsetLeft){
box.style.left = e.pageX + "px";
} else if(pageXRight >= box.offsetRight){
box.style.right = pageXRight + "px";
}
allTextbox.value = window.innerWidth;
leftTextbox.value = box.offsetLeft;
rightTextbox.value = box.offsetRight;
pageXTextbox.value = e.pageX;
pageXRightTextbox.value = pageXRight;
};
box.addEventListener("mousemove" , pushBox);
JqueryではなくJavascriptを使用して答えを見つけたいと思っています。
ありがとう。