ГлавнаяHTML/CSS → Плавная прокрутка "Наверх" на чистом CSS без JS
HTML/CSS

Плавная прокрутка "Наверх" на чистом CSS без JS

Плавная прокрутка "Наверх" на чистом CSS без JS
Подпишись на нас в телеграм @coderoll

Современные проекты очень часто используют кнопку "Наверх" для удобного пользования интерфейсом. Ведь это ускоряет взаимодействие с проектом в целом. Изначально такие кнопки многие делали на jQuery, но технологии не стоят на месте и можно сделать реализацию кнопки наверх на чистом CSS без использования JS и каких либо библиотек.

За прокрутку страницы отвечают современные методы:

position: sticky
scroll-behavior: smooth


Для начала сделаем базовую разметку с применением якорной ссылки, которая и будет отвечать за скролл к верху страницы.

<header id="top">Title</header>
<main>
  <article>
    <!-- long form content here -->
  </article>
  <!-- Back to Top link -->
  <div class="back-to-top-wrapper">
    <a href="#top" class="back-to-top-link" aria-label="Scroll to Top">🔝</a>
  </div>
</main>


Вторым действием, нам необходимо стилизовать эту кнопку. Добавляем данный код себе в style.css

.back-to-top-wrapper {
  position: absolute;
  top: 100vh;
  right: 0.25rem;
  bottom: -5em;
  width: 3em;
  pointer-events: none;
}

.back-to-top-link {
  position: fixed;
  position: -webkit-sticky;
  position: sticky;
  pointer-events: all;
  top: calc(100vh - 5rem);
  display: inline-block;
  text-decoration: none;
  font-size: 2rem;
  line-height: 3rem;
  text-align: center;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  padding: 0.25rem;
  border: 1px solid #254568;
  background-color: #d6e3f0;
  -webkit-transition: -webkit-transform 80ms ease-in;
  transition: -webkit-transform 80ms ease-in;
  transition: transform 80ms ease-in;
  transition: transform 80ms ease-in, -webkit-transform 80ms ease-in;
}
.back-to-top-link:hover, .back-to-top-link:focus {
  -webkit-transform: scale(1.1);
          transform: scale(1.1);
}
.back-to-top-link:focus {
  outline: none;
  box-shadow: 0 0 0 3px #4e85c0;
}


И последним действием создаем метод для скролла так же в CSS файле

@media screen and (prefers-reduced-motion: no-preference) {
  html,
  body {
    scroll-behavior: smooth;
  }
}


Минусы данного способа:
- Нет поддержки Safari. IE, Opera Mobile

Добавить комментарий
Кликните на изображение чтобы обновить код, если он неразборчив