Это может быть связано со скоростью браузера, который вы используете.Лично для меня код работает должным образом.
Есть несколько оптимизаций, которые вы можете внести в свой код, которые потенциально могут ускорить его.
Во-первых, вы запрашиваете DOM и создаетеновая функция setTrail каждый раз, когда вызывается событие mousemove.Вы можете переместить их за пределы слушателя, чтобы единственным кодом, который выполняется при перемещении мыши, был код для перемещения ваших следов.
const body = document.querySelector('body');
let previousLeft = 0;
let previousTop = 0;
const mouseTrails = document.querySelectorAll('.mouseTrail');
function setTrail(x, y, offsetX, offsetY) {
for (i = 0; i < mouseTrails.length; i++){
mouseTrails[i].style.left = x + "px";
mouseTrails[i].style.top = y + "px";
mouseTrails[i].style.display = "block";
x += offsetX;
y += offsetY;
}
}
window.addEventListener('mousemove', function(e){
let leftMouse = e.clientX;
let topMouse = e.clientY;
if(leftMouse > previousLeft && topMouse > previousTop){
setTrail(leftMouse, topMouse, -20, -20);
}
else if(leftMouse < previousLeft && topMouse < previousTop){
setTrail(leftMouse, topMouse, 20, 20);
}
else if(leftMouse > previousLeft && topMouse < previousTop){
setTrail(leftMouse, topMouse, -20, 20);
}
else if(leftMouse < previousLeft && topMouse > previousTop){
setTrail(leftMouse, topMouse, 20, -20);
}
else{
setTrail(leftMouse, topMouse, 0,0);
}
previousLeft = leftMouse;
previousTop = topMouse;
});