Трудно сказать, что на самом деле идет не так в вашем примере кода, поэтому я попытался сделать более легкую версию, которая, надеюсь, будет делать то, что должен делать ваш собственный скрипт.
Также, на мой взгляд, воздерживаться от использования jQuery animate
. CSS действительно стал очень мощным и может сделать для вас большую работу по позиционированию и переходам.
Надеюсь, это поможет вам. Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать.
var $container = $('.container');
var $drone = $('.drone');
var droneCenter = {
x: $drone.width() / 2,
y: $drone.height() / 2
};
$container.on('mousemove', function(event) {
$drone.css('transform', `translate3d(${event.offsetX - droneCenter.x}px, ${event.offsetY - droneCenter.y}px, 0)`);
});
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: grid;
align-items: safe center;
justify-content: safe center;
}
.wrapper {
width: 100vw;
height: 100vh;
max-width: 1000px;
max-height: 1000px;
padding: 15px;
}
.container {
position: relative;
width: 100%;
height: 100%;
background-color: #f7f7f7;
border: 1px solid #f0f0f0;
border-radius: 5px;
overflow: hidden;
}
.drone {
display: block;
position: absolute;
top: 0;
left: 0;
width: 25px;
height: 25px;
background-color: red;
border-radius: 50%;
transition: transform 800ms ease-out;
will-change: transform;
pointer-events: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
<div class="container">
<div class="drone"></div>
</div>
</div>