Или как вариант.я
Код взаимствован с другого источника.
1.При клике на якорную ссылку, добавьте обработчик события, который предотвращает переход по ссылке по умолчанию (чтобы не прервать плавный скролл).
2.Когда происходит плавный скролл и достигается цель, history.pushState() используется для обновления URL с якорем.
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
// Получите якорь из href атрибута ссылки
const target = document.querySelector(this.getAttribute('href'));
// Плавно прокрутите до цели
target.scrollIntoView({ behavior: 'smooth' });
// Обновите URL с якорем
history.pushState({}, '', this.getAttribute('href'));
});
});