Решения CSS и JavaScript для прокрутки к началу страницы

CSS решение

1. Базовое решение CSS

<html>
  <body>
     <a id="top"></a>
     <!-- the entire document -->
     <a href="#top">Jump to top of page</a>
  </body>
</html>

Ниже показан эффект, и вы можете заметить, что он сразу же перескакивает на верх страницы без какого-либо плавного эффекта.

2. Решение CSS с плавной прокруткой

Если вы хотите, чтобы он плавно прокручивался вверх, вы можете сделать это в CSS, если хотите:

html { scroll-behavior: smooth; }

Вот результат с эффектом плавной прокрутки.

Однако убедитесь, что не все браузеры поддерживают scroll-behavior

Решение JavaScript

Возможно, вам потребуется запустить прокрутку с помощью JavaScript, и в этом случае есть несколько вариантов:

  1. window.scrollTo()
  2. document.documentElement.scrollTop()
  3. window.scroll()
  4. document.documentElement.scrollIntoView()

1. window.scrollTo ()

window.scrollTo(0, 0) - беспроигрышный вариант для прокрутки окна (или любого другого элемента) обратно наверх. Его поведение при прокрутке также определяется CSS.

Например, без эффекта сглаживания CSS:

<html>
  <body>
    <a onClick="window.scrollTo(0, 0)">Top</a>
  </body>
</html>

Результат:

Например, с CSS scroll-behavior:

<html>
  <style>
    html { scroll-behavior: smooth; }
  </style>
  <body>
    <a onClick="window.scrollTo(0, 0)">Top</a>
  </body>
</html>

даст вам эффект плавной прокрутки, но помните о проблеме поддержки браузером scroll-behavior (как показано ранее).

2. window.scroll

Если вы не используете CSS для эффекта плавной прокрутки, вы можете настроить плавность в JavaScript window.scroll()

window.scroll({
   top: 0,
   left: 0,
   behavior: 'smooth'
});

Например

<html>
  <body>
    <a onClick="window.scroll({ top: 0,left: 0,behavior: 'smooth' });">Top</a>
  </body>
</html>

Также даст вам эффект плавной прокрутки:

Но имейте в виду, что браузер поддерживает ScrollToOptions

3. document.documentElement.scrollTop

Свойство Element.scrollTop получает или задает количество пикселей, на которые содержимое элемента прокручивается по вертикали. document.documentElement.scrollTop scrollTop используется в корневом элементе (элемент <html>).

<a onClick="document.documentElement.scrollTop = 0;">Top</a>

И вот результат, никакого плавного эффекта явно нет. Но это свойство поддерживается практически всеми браузерами.

4. document.documentElement.scrollIntoView ()

Метод scrollIntoView() интерфейса Element прокручивает родительский контейнер элемента таким образом, чтобы элемент, для которого вызывается scrollIntoView(), был виден пользователю. document.documentElement.scrollIntoView() - это особый случай, который scrollIntoView используется в корневом элементе (элементе <html>).

Некоторые браузеры поддерживают scrollIntoViewOptions, который позволяет анимацию перехода.

Например:

<a onClick="document.documentElement.scrollIntoView({ behavior: 'smooth' });">Top</a>

Также даст вам эффект плавной прокрутки:

Наслаждаться!

Вот и все. Спасибо за прочтение.