JSFiddle - React, Tailwind, and code Playground
HTML
<div id="scene">
<div class="object">
</div>
</div>
CSS
#scene {
position: absolute;
left: 50%;
top: 50%;
width: 200px;
height: 200px;
margin: -100px 0 0 -100px;
background-color: red;
}
.object {
position: absolute;
left: 50px;
top: 50px;
width: 50px;
height: 50px;
background-color: blue;
cursor:default;
}
JavaScript
jQuery(document).ready(function(){
var scene = $('#scene');
var object = $('.object');
scene.mousemove(function(e){
// get offset of object relative to scene
var offsetX = e.pageX - scene.offset().left;
var offsetY = e.pageY - scene.offset().top;
// grab object in it's center (optional)
offsetX -= object.width() / 2;
offsetY -= object.height() / 2;
// don't left to object out of the scene
var maxX = scene.width() - object.width();
var maxY = scene.height() - object.height();
if(0 > offsetX) offsetX = 0;
else if(offsetX > maxX) offsetX = maxX ;
if(0 > offsetY) offsetY = 0;
else if(offsetY > maxY) offsetY = maxY;
// delete decimals
offsetX = Math.floor(offsetX);
offsetY = Math.floor(offsetY);
// debug information
object.html('X: ' + offsetX + '<br>Y: ' + offsetY);
// move object
object.css('left', offsetX).css('top', offsetY);
});
});