Задать вопрос
Vextor-ltd
@Vextor-ltd
Webdeveloper

Как сохранить якорные ссылки при плавном скролле?

У меня есть якорные ссылки в меню, но когда я прописываю плавный скролл с помощью scrollIntoView({ behavior: 'smooth' }), то я теряю якорную ссылку в URL. Несмотря на то, что я не делаю e.preventDefault(), плавный скролл происходит, однако пропадает ссылка на якорь в URL. Т.о. я не смогу кинуть кому-то ссылку на необходимый блок на странице. Как это исправить?
  • Вопрос задан
  • 140 просмотров
Подписаться 2 Средний 3 комментария
Решения вопроса 1
Или как вариант.я
Код взаимствован с другого источника.
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'));
  });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
1800 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект