TGViewer
<divelopers> <divelopers> @alexnozer_dev · 1.18K subscribers
Post #261 953
Кнопка «наверх»

Один из распространённых паттернов в интернете — кнопка «наверх», которая плавно прокручивает страницу к началу. Обычно для этого используется JS-плагин или пишется небольшой скрипт с вызовом метода scroll* и Web Animations API.

Темани Афиф придумал способ сделать такую кнопку на CSS. Понадобится grid, sticky-позиционирование и немного хитростей. Вот весь код:

<body>
<div>
<header id="top">
<!-- шапка страницы -->
</header>
<!-- остальной контент -->
</div>
<a href="#top">Наверх</a>
</body>


body {
display: grid;
grid-template-columns: auto 0px;
}

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

a[href="#top"] {
--offset: 50px;

position: sticky;
bottom: 20px;
margin-right: 10px;
place-self: end;
margin-top: calc(100vh + var(--offset));
}


В <body> создаётся сетка из двух колонок: для контента и кнопки. Колонка с кнопкой получает нулевую ширину. Кнопка смещается на высоту области просмотра и ещё некоторое дополнительное расстояние. При прокрутке прилипает к нижней части экрана.

Получается то что нужно: вверху страницы кнопка не видна, но появляется при прокрутке на указанное в --offset расстояние и прилипает к нижней части страницы. Саму кнопку при этом можно свободно стилизовать.

В качестве «кнопки» используется элемент ссылки <a> с фрагментом #top. При нажатии браузер прокрутит страницу к элементу с атрибутом id="top", в примере это <header>. Причём не просто прокрутит, а перенесёт туда фокус.

Свойство scroll-behavior: smooth у <body> сделает прокрутку плавной, но только если пользователь не предпочёл уменьшить количество движений в настройках ОС. Пользовательские предпочтения нужно уважать.

Получается вполне интересное, не сложное и функциональное решение для кнопки «наверх» без применения JS. Подробнее о нём можно почитать в статье Темани Афифа «How to Make an Animated Back to Top Button Using Only CSS».

#css #ui
freeCodeCamp.org How to Make an Animated Back to Top Button Using Only CSS Having a "back to top" button on a website is important. It allows users to easily scroll back to the top of the page. Most websites rely on JavaScript to toggle the visibility of the button based on the amount of scroll. In this post, I will show y...
  • 🔥 25
  • ❤ 11
  • 👍 5
More from @alexnozer_dev
  1. Sep 23, 2026Images Preview На некоторых сайтах, где надо показывать изображения в высоком качестве, дл…
  2. Sep 21, 2026Реализация пользовательских атрибутов Под конец прошлого года я рассказывал об API пользов…
  3. Sep 14, 2026Подклассы Event вместо CustomEvent Многие библиотеки предоставляют систему событий в качес…
  4. Sep 11, 2026Эволюция стилей в темах Shopify Адам Ватан на днях поделился новостью, что Shopify выкупил…
  5. Sep 9, 2026Persistent Widgets Многие сайты не должны быть SPA. Но иногда эта архитектура продиктована…
  6. Sep 7, 2026Processing Instructions и маркеры В DOM всё представлено в виде узлов (Node) разных типов.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →