«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться плавной прокрутки с помощью якорных ссылок?

Как добиться плавной прокрутки с помощью якорных ссылок?

Опубликовано 21 декабря 2024 г.
Просматривать:504

How Can I Achieve Smooth Scrolling with Anchor Links?

Плавная прокрутка при нажатии на якорную ссылку

При навигации по веб-странице с якорными ссылками пользователи ожидают плавного перехода к целевому разделу. Однако поведение прокрутки по умолчанию может быть резким. В этой статье рассматриваются методы обеспечения плавной прокрутки при нажатии на якорные ссылки.

Встроенная поддержка

В таких браузерах, как Chrome и Firefox, реализована встроенная поддержка плавной прокрутки. Это реализовано с помощью свойства «behavior» со значением «smooth» при прокрутке в поле зрения:

document.querySelectorAll('a[href^="#"]').forEach(anchor => {
    anchor.addEventListener('click', function (e) {
        e.preventDefault();

        document.querySelector(this.getAttribute('href')).scrollIntoView({
            behavior: 'smooth'
        });
    });
});

Плагин jQuery

Для старых браузеров плагин jQuery может сгладить анимацию прокрутки. Этот метод использует метод «анимации» для перемещения страницы в целевой раздел:

$(document).on('click', 'a[href^="#"]', function (event) {
    event.preventDefault();

    $('html, body').animate({
        scrollTop: $($.attr(this, 'href')).offset().top
    }, 500);
});

Усовершенствованная техника

Если у целевого элемента отсутствует идентификатор, можно использовать следующий модифицированный плагин jQuery:

$('a[href^="#"]').click(function () {
    $('html, body').animate({
        scrollTop: $('[name="'   $.attr(this, 'href').substr(1)   '"]').offset().top
    }, 500);

    return false;
});

Оптимизация производительности

Кэширование селектора "$('html, body')" внутри переменной повышает производительность:

var $root = $('html, body');

$('a[href^="#"]').click(function () {
    $root.animate({
        scrollTop: $( $.attr(this, 'href') ).offset().top
    }, 500);

    return false;
});

Сохранение хеша URL-адреса

Чтобы обновить хеш URL-адреса при плавной прокрутке, используйте обратный вызов «анимации»:

var $root = $('html, body');

$('a[href^="#"]').click(function() {
    var href = $.attr(this, 'href');

    $root.animate({
        scrollTop: $(href).offset().top
    }, 500, function () {
        window.location.hash = href;
    });

    return false;
});

Применив один из этих методов, вы можете обеспечить безупречный и удобный интерфейс прокрутки при навигации по странице с помощью якорных ссылок.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3