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

Есть несколько способов добиться плавной прокрутки в JavaScript. Давайте рассмотрим два распространенных подхода:

1. Использование CSS:
CSS можно использовать для обеспечения плавной прокрутки путем применения свойства `scroll-behavior` к нужному элементу. Свойство `scroll-behavior` может быть установлено на `smooth`, что обеспечивает плавную прокрутку.

Пример:

html {
 scroll-behavior: smooth;
}

Применяя это правило CSS к элементу html, все прокручиваемые элементы на странице будут иметь плавную прокрутку.

2. Использование JavaScript.
Плавная прокрутка также может быть достигнута программно с помощью JavaScript. Этот подход позволяет лучше контролировать поведение прокрутки и может применяться к определенным элементам или кастомизированным действиям прокрутки.

Пример:

const scrollToElement = (element) => {
 window.scrollTo({
 behavior: 'smooth',
 top: element.offsetTop,
 });
};
const button = document.getElementById('scroll-button');
const targetElement = document.getElementById('target-element');
button.addEventListener('click', () => {
 scrollToElement(targetElement);
});

В этом примере мы определяем функцию `scrollToElement`, которая принимает элемент в качестве параметра. При вызове он использует метод `window.scrollTo` с параметром `behavior`, установленным на `’smooth’’, и параметром `top`, установленным на смещение вверх целевого элемента. Прикрепив эту функцию к событию нажатия кнопки, мы можем плавно прокручивать до указанного элемента при нажатии кнопки.

Плавная прокрутка обеспечивает более совершенный и визуально привлекательный пользовательский интерфейс. Независимо от того, используете ли вы CSS или JavaScript, включение плавной прокрутки может улучшить навигацию и общее впечатление от вашей веб-страницы.