Плавная прокрутка к элементу на странице
Согласитесь, не очень красиво, когда нажимаешь по какой-нибудь ссылке-якорю, у тебя сразу резко прыгает страница к этому элементу. Гораздо симпатичнее, если прокрутка будет плавной.
Предлагаю 2 варианта, как реализовать плавный скролл к элементу на странице.
Вариант с использованием CSS
Для реализации плавной прокрутки через CSS нужно всего лишь добавить следующие стили:
html {
scroll-behavior: smooth;
}
Теперь прокрутка к любым элементам при клике на якорь будет совершаться плавно. Также дополнительно можно определенным элементам добавить свойство, которое будет задавать, какой отступ будет перед элементом сверху после прокрутки. Например:
h2 {
scroll-margin-top: 10px;
}
Вариант с использованием JS
Также есть вариант реализовать плавную прокрутку через JS. Для этого добавляем событие клика по document:
document.addEventListener('click', async (e) => {
const link = e.target.closest('.js-smooth-scroll');
if (!link) return;
e.preventDefault();
const element = document.querySelector(link.getAttribute('href'));
if (!element) return;
window.scrollBy({
top: element.getBoundingClientRect().top, //элемент
behavior: 'smooth', //параметр, задающий плавную прокрутку
});
});
HTML же выглядит так:
<a href="#anchor" class="js-smooth-scroll">Якорь</a>
Здесь проверяется, совершен ли клик по ссылке с классом js-smooth-scroll, после чего проверяется наличие на странице элемента с id, указанным в атрибуте href. Затем производим прокрутку к элементу, используя функцию window.scrollBy(), в которую передаем позицию элемента на странице и параметр, что прокрутка должна быть плавная. Подробнее о функции тут.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий