Кажется, что к window.scrollTo
* 1002 добавлено небольшое отступление. Я не видел ни одной документации, детализирующей эту проблему, и, честно говоря, до сих пор я не заметил, что заполнение небольшое (~ 5px), поэтому я попыталсяпоместив маленькие кружки в верхнем левом углу, центр круга должен быть справа от заданной координаты, но не совсем там, мы можем видеть весь круг, когда мы должны видеть только четверть его ...
Вот небольшой пример, показывающий проблему:
document.body.style.overflow = 'hidden';
ctx = document.getElementById('c').getContext('2d');
ctx.beginPath();
for (var i = 0; i < 10; i++ )
ctx.arc(500 + i*20, 500 + i*20, 5, 0, 2 * Math.PI);
ctx.fillStyle = "red";
ctx.fill();
var n = 500
function scroll() {
n = (n == 600) ? 500 : 600;
window.scrollTo({top: n, left: n, behavior: "smooth" });
}
setInterval(scroll, 1000);
scroll()
<canvas id="c" height=10000 width=10000></canvas>
Поскольку вы используете такой большой холст, я рекомендую вам попробовать игровой движок JS:
https://github.com/collections/javascript-game-engines