Добро пожаловать на сайт SEDBY
  • 169 просмотров +3
  • 17 февраля, 2026
  • Обновлено: 19 февраля, 2026
  • admin
  • Время чтения: 5 минут
  • 1 (Подробно)
Кнопка вверх

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

Зачем нужна кнопка вверх

Адаптивная верстка своим главным принципом имеет идею вертикального перестроения или vertical stackable. Принцип ее прост: все колонки выстраиваются в одну с использованием алгоритмов упорядочивания (например свойство order flex-модели).

Очевидно, что результатом такого перестроения является увеличение общей высоты страницы сайта. С учетом того, что в распоряжении мобильного пользователя имеется только пальцы, прокрутка контента становится серьезным вызовом. Если вы просмотрели или дочитали длинную страницу до конца, вернуться наверх будет весьма проблематично.

Решение сформировалось довольно быстро – знакомая всем кнопка “наверх”. Полный алгоритм ее использования выглядит следующим образом:

  • кнопка используется преимущественно в мобильной версии сайта, хотя и для десктопа она будет нелишней,
  • классическое размещение кнопки “наверх” – в правом нижнем углу страницы с использованием свойства position: fixed,
  • кнопка может оставаться невидимой до тех пор, пока не будет достигнут установленный предел скролла (например пока страница не будет прокручена на 500 пикселей),
  • при клике по кнопке наверх (событие click()) происходит скриптовая (jQuery или ванильный JavaScript) прокрутка страницы в самое верхнее положение.

Каждый из этих четырех пунктов используется и кастомизируется вебмастером или разработчиком сайта в зависимости от специфики проекта.

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

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

Реализация кнопки в начало страницы

Мы пройдем по всем позициям, а необходимость каждой из них вам придется определить самостоятельно. Первым делом разметка. Здесь все просто:

<a href="#" id="ontop" class="d-sm-none">Наверх</a>

Я использовал Bootstrap-класс .d-sm-none чтобы скрыть ее на разрешениях с шириной документа более 575px. Стили также не вызывают проблем:

a#ontop { visibility: hidden; opacity: 0; position: fixed; bottom: 2rem; right: 1rem; z-index: 100; }
body#scrolled-down a#ontop { visibility: visible; opacity: 1; }

Изначально кнопка скрыта. Скриптом включаем отображение при начале прокрутки:

$(window).scroll( function() {
  if ($(document).scrollTop() == 0) {
    $('body').removeAttr('id');
  } else {
    $('body').attr('id', 'scrolled-down');
  };
}

Теперь по скрипту. Это может быть более понятный и доступный вариант на jQuery или более популярный сегодня ванильный JavaScript. Начнем с первого:

$('a#ontop').on({
  click: function(e) {
    e.preventDefault();
    $("html, body").animate({
      scrollTop: 0
    }, 1000);
  }
});

Базовая опция на Javascript выглядит так:

let scrolltop = document.getElementById("ontop");
scrolltop.onclick = function(e) {
  e.preventDefault();
  document.documentElement.scrollTop = 0;
}

Но сегодня рекомендуемым и безопасным явлется метод window.scrollTo(), который и обладает лучшей совместимостью и позволяет скроллить плавно (параметр behaviour):

let scrolltop = document.getElementById("ontop");
scrolltop.onclick = function(e) {
  e.preventDefault();
  window.scrollTo({
    top: 0,
    behavior: 'smooth'
  });
}

Как видим, ничего сложного или ресурсоемкого.

Альтернативы и варианты размещения кнопки сколла наверх

Наблюдения показывают, что в природе существуют персонажи, которые категорически не приемлют кнопку наверх. Я уважаю любые мнения, хотя неаргументированная категоричность с претензией на всеобщую истину сильно настораживает.

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

По логике вещей, желание вернуть страницу наверх можно определить по одному простому алгоритму:

  1. Если посетитель скроллит страницу вниз, он счастлив. Ему не нужны ни sticky header, ни кнопка наверх.
  2. Как только он начнет скроллить вверх, это можно считать нужным моментом для отображения кнопки возврата к началу страницы или, например, sticky header / footer.

Что вы предложите пользователю, решайте самостоятельно. А JavaScript-код для данного трюка будет следующим:

// Hide block on scroll down
var didScroll;
var lastScrollTop = 0;
var delta = 5;
var target = $('nav#mainnav');
var targetHeight = target.outerHeight();

$(window).scroll(function(event) {
  didScroll = true;
});

setInterval(function() {
  if (didScroll) {
    hasScrolled();
    didScroll = false;
  }
}, 250);

function hasScrolled() {
  var st = $(this).scrollTop();

  // Make sure scroll exceeds delta
  if (Math.abs(lastScrollTop - st) <= delta) {
    return;
  }

  // If user scrolled down past the navbar, add class .hide-me
  // so that you never see what is behind the navbar.
  if (st > lastScrollTop && st > targetHeight) {
    // Scroll Down
    target.removeClass('show-me').addClass('hide-me');
  } else {
    // Scroll Up
    if (st + $(window).height() < $(document).height()) {
      target.removeClass('hide-me').addClass('show-me');
    }
  }
  lastScrollTop = st;
};

Код создавался для хедера, но подойдет и для кнопки “вернуться в начало страницы”.

Заключение

UI/UX-ориентированный дизайн это не бином Ньютона, а набор достаточно простых, но вполне функциональных приемов и решений, которые способны не только облегчить использование вашего сайта пользователем, но и сделать этот процесс более эффективным и достигающим максимального количества целей.

Мы обязательно продолжим эту тему в будущих публикациях, а пока предложим обсудить достоинства и недостатки CRM-систем.


Комментарии:
Аватар
  • 1. Eric
  • 17.02.2026 22:06

По поводу этой кнопки существует масса споров, в основном с противоречивой аргументацией. Обычно считается, что наличие sticky header делает кнопку наверх необязательной. Но этот же самый хедер отъедает 50-60 пикселей от рабочей зоны, тогда как кнопка практически не занимает места. К тому же есть вариант, при котором она может отображаться только при скролле вверх.


Новый комментарий

Ваш комментарий будет доступен для редактирования 10 минут
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость