Прокрутка страницы jquery. Вертикальный скроллинг страницы средствами jQuery и кроссбраузерность

У меня есть этот элемент input:

Затем у меня есть другие элементы, такие как другие текстовые входы, текстовые поля и т.д.

Когда пользователь нажимает на input с #subject , страница должна прокручиваться до последнего элемента страницы с помощью приятной анимации. Это должен быть свиток вниз и не вверх.

Последний элемент страницы - это кнопка submit с #submit:

Анимация не должна быть слишком быстрой и должна быть текучей.

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

30 ответов

Предполагая, что у вас есть кнопка с button id, попробуйте этот пример:

$("#button").click(function() { $().animate({ scrollTop: $("#elementtoScrollToID").offset().top }, 2000); });

Я написал этот легкий плагин, чтобы упростить прокрутку страницы/элемента. Он гибкий, где вы могли бы пройти в целевом элементе или заданном значении. Возможно, это может стать частью следующего официального релиза jQuery, что вы думаете?

Примеры использования

$("body").scrollTo("#target"); // Scroll screen to target element $("body").scrollTo(500); // Scroll screen 500 pixels down $("#scrollable").scrollTo(100); // Scroll individual element 100 pixels down

Параметры:

scrollTarget: элемент, строка или номер, который указывает желаемую позицию прокрутки.

offsetTop: число, определяющее дополнительный интервал выше цели прокрутки.

duration: строка или число, определяющее, как долго будет выполняться анимация.

easing: строка, указывающая, какую функцию ослабления использовать для перехода.

complete: функция для вызова после завершения анимации.

Если вас мало интересует эффект гладкой прокрутки и просто интересуется прокруткой к определенному элементу, для этого вам не требуется некоторая функция jQuery. Javascript имеет ваше дело:

Итак, все, что вам нужно сделать, это: $("selector").get(0).scrollIntoView();

Get(0) используется, потому что мы хотим получить элемент DOM JavaScript, а не элемент DOM JQuery.

Используя этот простой script

If($(window.location.hash).length > 0){ $("html, body").animate({ scrollTop: $(window.location.hash).offset().top}, 1000); }

Сделал бы в сортировке, что, если в URL-адресе найден хэш-тег, scrollTo анимирует идентификатор. Если не найден хэш-тег, то игнорируйте script.

  • Section 1
  • Section 2
  • Section 3

Решение Стива и Питера работает очень хорошо.

Но в некоторых случаях вам, возможно, придется преобразовать значение в целое число. Как ни странно, возвращаемое значение из $("...").offset().top иногда находится в float .
Использование: parseInt($("....").offset().top)

Например:

$("#button").click(function() { $("html, body").animate({ scrollTop: parseInt($("#elementtoScrollToID").offset().top) }, 2000); });

Компактная версия "анимированного" решения.

$.fn.scrollTo = function (speed) { if (typeof(speed) === "undefined") speed = 1000; $("html, body").animate({ scrollTop: parseInt($(this).offset().top) }, speed); };

Основное использование: $("#your_element").scrollTo();

Если вы используете только прокрутку к элементу ввода, вы можете использовать focus() . Например, если вы хотите прокрутить до первого видимого ввода:

$(":input:visible").first().focus();

Или первый видимый вход в контейнер с классом.error:

$(".error:input:visible").first().focus();

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

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

$("html, body").animate({ scrollTop: $target.offset().top }, duration);

Плохой UX.

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

    Если начальная точка анимации близка к целевому элементу, анимация мучительно медленная.

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

Чтобы справиться с этими проблемами (и куча других), вы можете использовать мой плагин, jQuery.scrollable . Затем вызов будет

$(window).scrollTo(targetPosition);

Что касается целевой позиции, $target.offset().top выполняет работу в большинстве случаев. Но имейте в виду, что возвращаемое значение не принимает во внимание элемент html (см. эту демонстрацию). Если вам нужно, чтобы целевая позиция была точной при любых обстоятельствах, лучше использовать

TargetPosition = $(window).scrollTop() + $target.getBoundingClientRect().top;

Это работает, даже если установлена ​​граница с элементом html .

Это мой подход, абстрагирующий идентификатор и href"s, используя универсальный селектор классов

$(function() { // Generic selector to be used anywhere $(".js-scroll-to").click(function(e) { // Get the href dynamically var destination = $(this).attr("href"); // Prevent href="#" link from changing the URL hash (optional) e.preventDefault(); // Animate scroll to destination $("html, body").animate({ scrollTop: $(destination).offset().top }, 500); }); });

Очень простой и простой в использовании пользовательский плагин jQuery. Просто добавьте атрибут scroll= в свой элемент clickable и установите его значение для селектора, который вы хотите прокрутить.

Так же: Click me . Он может использоваться для любого элемента.

(function($){ $.fn.animateScroll = function(){ console.log($("")); $("").click(function(){ selector = $($(this).attr("scroll")); console.log(selector); console.log(selector.offset().top); $("html body").animate({scrollTop: (selector.offset().top)}, //- $(window).scrollTop() 1000); }); } })(jQuery); // RUN jQuery(document).ready(function($) { $().animateScroll(); }); // IN HTML EXAMPLE // RUN ONCLICK ON OBJECT WITH ATTRIBUTE SCROLL=".SELECTOR" // Click To Scroll

анимаций:

// slide to top of the page $(".up").click(function () { $("html, body").animate({ scrollTop: 0 }, 600); return false; }); // slide page to anchor $(".menutop b").click(function(){ //event.preventDefault(); $("html, body").animate({ scrollTop: $($(this).attr("href")).offset().top }, 600); return false; }); // Scroll to class, div $("#button").click(function() { $("html, body").animate({ scrollTop: $("#target-element").offset().top }, 1000); }); // div background animate $(window).scroll(function () { var x = $(this).scrollTop(); // freezze div background $(".banner0").css("background-position", "0px " + x +"px"); // from left to right $(".banner0").css("background-position", x+"px " +"0px"); // from right to left $(".banner0").css("background-position", -x+"px " +"0px"); // from bottom to top $("#skills").css("background-position", "0px " + -x + "px"); // move background from top to bottom $(".skills1").css("background-position", "0% " + parseInt(-x / 1) + "px" + ", 0% " + parseInt(-x / 1) + "px, center top"); // Show hide mtop menu if (x > 100) { $(".menu").addClass("menushow"); $(".menu").fadeIn("slow"); $(".menu").animate({opacity: 0.75}, 500); } else { $(".menu").removeClass("menushow"); $(".menu").animate({opacity: 1}, 500); } }); // progres bar animation simple $(".bar1").each(function(i) { var width = $(this).data("width"); $(this).animate({"width" : width + "%" }, 900, function(){ // Animation complete }); });

$("html, body").animate(...) не для меня на iphone, браузере браузера Chrome Chrome.

Мне нужно было настроить целевой элемент контента на странице.

$("# cotnent"). Анимировать (...)

Вот что я закончил с

If (navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/)) { $("#content").animate({ scrollTop: $("#elementtoScrollToID").offset().top }, "slow"); } else{ $("html, body").animate({ scrollTop: $("#elementtoScrollToID").offset().top }, "slow"); }

Содержимое всего тела, связанное С#content div

.... ....

Если вы хотите выполнить прокрутку в контейнере переполнения (вместо $("html, body") , который был указан выше), работая также с абсолютным позиционированием, это способ:

Var elem = $("#myElement"), container = $("#myScrollableContainer"), pos = elem.position().top + container.scrollTop() - container.position().top; container.animate({ scrollTop: pos }

jQuery(document).ready(function($) { $("a").bind("click.smoothscroll",function (e) { e.preventDefault(); var target = this.hash, $target = $(target); $("html, body").stop().animate({ "scrollTop": $target.offset().top-40 }, 900, "swing", function () { window.location.hash = target; }); }); });

  • Section 1
  • Section 2
  • Section 3

$("html, body").animate({scrollTop: Math.min($(to).offset().top-margintop, //margintop is the margin above the target $("body").scrollHeight-$("body").height()) //if the target is at the bottom }, 2000);

Чтобы показать полный элемент (если возможно, с текущим размером окна):

Var element = $("#some_element"); var elementHeight = element.height(); var windowHeight = $(window).height(); var offset = Math.min(elementHeight, windowHeight) + element.offset().top; $("html, body").animate({ scrollTop: offset }, 500);

Я написал функцию общего назначения, которая прокручивает объект jQuery, селектор CSS или числовое значение.

Пример использования:

// scroll to "#target-element": $.scrollTo("#target-element"); // scroll to 80 pixels above first element with class ".invalid": $.scrollTo(".invalid", -80); // scroll a container with id "#my-container" to 300 pixels from its top: $.scrollTo(300, 0, "slow", "#my-container");

Код функции:

/** * Scrolls the container to the target position minus the offset * * @param target - the destination to scroll to, can be a jQuery object * jQuery selector, or numeric position * @param offset - the offset in pixels from the target position, e.g. * pass -80 to scroll to 80 pixels above the target * @param speed - the scroll speed in milliseconds, or one of the * strings "fast" or "slow". default: 500 * @param container - a jQuery object or selector for the container to * be scrolled. default: "html, body" */ jQuery.scrollTo = function (target, offset, speed, container) { if (isNaN(target)) { if (!(target instanceof jQuery)) target = $(target); target = parseInt(target.offset().top); } container = container || "html, body"; if (!(container instanceof jQuery)) container = $(container); speed = speed || 500; offset = offset || 0; container.animate({ scrollTop: target + offset }, speed); };

За последние несколько лет серьезно возросла популярность одностраничных (скроллинговых) сайтов. Хотя данный вид сайтов и не для всех, все же полезно знать, как они работают. Сегодня я покажу, как создать простой одностраничный (скроллинговый) сайт с помощью jQuery.

Прежде чем мы начнем, можете посмотреть Demo.

Что ж, приступим…

Создавать будем следующее:

HTML

Разметка (HTML) страницы будет предельно проста.

Сперва создадим навигацию.

  • Paragraph 1
  • Paragraph 2
  • Paragraph 3
  • Paragraph 4
  • Paragraph 5

Что мы сделали: элемент nav имеет ширину 100% , то есть его ширина будет равна ширине родительского элемента. Для nav свойство position имеет значение fixed , поэтому при скроллинге страницы элемент nav будет всегда перед глазами пользователя. Чтобы создать навигацию мы в тег nav поместили тег ul .

Преимущества:

  • Если у пользователя выключен javascript, ссылки все равно работают.
  • При помощи jQuery мы будем считывать атрибут href с каждой ссылки.
  • Теперь, когда мы создали простую навигационную панель, можем заняться главным контентом страницы.

    Lorem ipsum dolor sit amet, consectetur adipiscing elit...

    In ut sapien sem, a convallis odio. Aenean consequat ornare egestas...

    Donec sodales diam et libero ultrices ornare...

    Phasellus dolor sem, pharetra nec scelerisque sit amet, consequat quis dolor...

    Proin varius pellentesque velit, at consequat risus hendrerit quis...

    Как видите, разметка предельно проста. Она состоит из блока content , который вмещает параграфы (p). Каждый параграф имеет свой id , связанный со ссылкой в нашей навигации.

    CSS

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

    Начнем со стилей главного контента страницы, что очень просто.

    Body { font-family: arial; font-size: 15px; line-height: 25px; color: #515151; background: #fdfdfd; } #content { width: 500px; margin: 0 auto; padding-top: 40px; height: 2000px; } #content p { margin-bottom: 25px; }

    В body определяем текст и цвета фона; блок content имеет ширину 500px и центрирован. Значение для padding-top у блока content равно 40рх – это сделано для того, чтобы навигация не блокировала верхние 40px контента. Высота равна 2000px , чтобы уместить контент и показать скроллинг. Хотя, как правило, в этом нет необходимости. Каждый параграф имеет свойство margin-bottom , равное 25px , чтобы можно было понять, где один параграф заканчивается и начинается другой.

    Теперь перейдем к навигации:

    Nav { width: 100%; position: fixed; height: 40px; background: white; border: 1px solid #CACACA; border-top: none; -webkit-box-shadow: 0px 0px 3px 1px #ebebeb; -moz-box-shadow: 0px 0px 3px 1px #ebebeb; box-shadow: 0px 0px 3px 1px #ebebeb; } nav ul { width: 750px; margin: 0 auto; } nav ul li{ float: left; width: 150px; text-align: center; } nav ul li a { line-height: 40px; font-size: 16px; text-decoration: none; color: #515151; border-bottom: 1px dotted #515151; } nav ul li a:hover{ color: #000; }

    Чтобы nav занимал всю ширину браузера, значение его ширины равно 100% . Чтобы nav оставался на экране монитора при скроллинге, он имеет объявление position:fixed . Высота равна 40рх, что вполне нормально для горизонтального верхнего меню. Для придания симпатичного вида был использован простой стиль. ul центрировано и имеет ширину 750рх, чтобы у каждой ссылке было достаточно места. Каждая li создана плавающей, поэтому все ссылки находятся на одной линии. Наконец, для ссылок также назначен простой стиль.

    jQuery

    Вот, как это будет работать: при клике (click) по навигационной ссылке произойдет скроллинг к тому параграфу, на который указывает ссылка.

    Как всегда, начнем с функции document.ready

    $(document).ready(function(){ });

    Теперь, прежде чем перейти к функцию click , напишем функцию scrollToDiv , которая будет осуществлять скроллинг к выбранному нами блоку. Параметров будет 2 – элемент, к котрому ведется скроллирование и высота навигацинной панели в верхней части страницы.

    Function scrollToDiv(element,navheight){ }

    Теперь мы описываем три переменные, они нам понадобятся для аккуратного скроллинга.

    Function scrollToDiv(element,navheight){ var offset = element.offset(); var offsetTop = offset.top; var totalScroll = offsetTop-navheight; }

    Переменная offset это смещение элемента. Ее использует переменная offsetTop , чтобы вытащить значение top . В результате чего получаем расстояние от верха страницы до элемента. Переменная totalScroll отвечает за расстояние, на которое браузеру необходимо прокрутить страницу. Без верхней панели навигации величина скроллирования будет равна величине offsetTop . Однако при вычислении переменной totalScroll нужно помнить, что наша навигационная панель блокирует верхние 40рх контента. Здесь нам поможет параметр navheight .

    Наконец, скроллируем страницу:

    $("body,html").animate({ scrollTop: totalScroll }, 500);

    Функция jQuery animate позволит нам реализовать плавный скроллинг к нужному нам месту страницы. В данном случае на анимацию уходит 500 миллисекунд.

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

    Вот полная функция scrollToDiv:

    Function scrollToDiv(element,navheight){ var offset = element.offset(); var offsetTop = offset.top; var totalScroll = offsetTop-navheight; $("body,html").animate({ scrollTop: totalScroll }, 500); }

    Перейдем к функции click .

    $("nav ul li a").click(function(){ return false; });

    Это только каркас функции click . Объявлением return false на конце, предотвратит переход браузера по ссылке.

    Прежде чем передать элемент функции, для него нужно найти имя.

    Var el = $(this).attr("href"); var elWrapped = $(el);

    Переменная el содержит значение атрибута href . Чтобы jQuery могла использовать переменную el , ее необходимо завернуть в elWrapped . Следующий код jQuery исполнить не может:

    #paragraph1.offset();

    Но может исполнить это:

    $("#paragraph1").offset();

    Вот, почему необходима переменная elWrapped .

    Полная функция click:

    $("nav ul li a").click(function(){ var el = $(this).attr("href"); var elWrapped = $(el); scrollToDiv(elWrapped,40); return false; });

    Вот и все – теперь у нас есть простая страница с ссылками, при клике по которым происходит скроллинг к нужной части страницы .

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

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

    $("a" ) .click (function () { var elementClick = $(this ) .attr ("href" ) ; var destination = $(elementClick) .offset () .top ; $("html, body" ) .animate ({ scrollTop: destination } , 600 ) ; return false ; } ) ; Альтернативный взгляд

    Раньше делали немного по другому - использовали определение браузера - $.browser.safari || $.browser.webkit и в зависимости от условия делали либо $("body").animate() , либо $("html").animate() . С версии 1.9 jQuery - $.browser была удалена и поэтому не сработает. Но можно модифицировать код и получить такой скрипт:

    var matched, browser; jQuery.uaMatch = function ( ua ) { ua = ua.toLowerCase () ; var match = /(chrome)[ \/]([\w.]+)/ .exec ( ua ) || /(webkit)[ \/]([\w.]+)/ .exec ( ua ) || /(opera)(?:.*version|)[ \/]([\w.]+)/ .exec ( ua ) || /(msie)[\s?]([\w.]+)/ .exec ( ua ) || /(trident)(?:.*? rv:([\w.]+)|)/ .exec ( ua ) || ua.indexOf ("compatible" ) < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/ .exec ( ua ) || ; return { browser: match[ 1 ] || "" , version: match[ 2 ] || "0" } ; } ; matched = jQuery.uaMatch ( navigator.userAgent ) ; //IE 11+ fix (Trident) matched.browser = matched.browser == "trident" ? "msie" : matched.browser ; browser = { } ; if ( matched.browser ) { browser[ matched.browser ] = true ; browser.version = matched.version ; } $("a" ) .click (function () { var elementClick = $(this ) .attr ("href" ) ; var destination = $(elementClick) .offset () .top ; if (browser.chrome || browser.webkit ) { $("body" ) .animate ({ scrollTop: destination } , 600 ) ; } else { $("html" ) .animate ({ scrollTop: destination } , 600 ) ; } return false ; } ) ;

    Вот и все. Всем успехов!

    Сегодня мы вновь попрактикуемся с jQuery. Мы будем писать скрипт плавного скроллинга при нажатии на кнопку. Сделаем так чтобы при нажатии на кнопку, пользователя плавно переносило на нужный блок. Этот скрипт можно использовать для создания красивого якорного меню.

    Вот скрипт, который нам понадобится.

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

    Внутри функции в первой строке создается переменная offset со значение 0.

    animate – позволяет выполнить пользовательскую анимацию основанную на изменении CSS свойств для выбранных элементов.

    scrollTop – получает значение отступа прокрутки сверху для первого элемента в наборе.

    Там где стоит 1000, указывается время продолжительности перехода. Изменив это время вы ускоряете, либо замедляете прокрутку.

    Как это работает?

    Давайте напишем тестовый код, на котором мы попробуем наш скрипт в работе.

    Document #block1 { margin: 1200px 0px 100px 0px ; } Заказать звонок! Привет! function slowScroll(id) { var offset = 0; $("html, body").animate({ scrollTop: $(id).offset().top - offset }, 1000); return false; }

    Здесь обычный HTML шаблон.

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

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

    Заказать звонок!

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

    Reg.ru: домены и хостинг

    Крупнейший регистратор и хостинг-провайдер в России.

    Более 2 миллионов доменных имен на обслуживании.

    Продвижение, почта для домена, решения для бизнеса.

    Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

    Фреймворк Bootstrap: быстрая адаптивная вёрстка

    Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

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

    Верстайте на заказ и получайте деньги.

    *Наведите курсор мыши для приостановки прокрутки.

    Назад Вперед

    Плавная прокрутка страницы вверх на jQuery

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

    Очень часто бывает удобно воспользоваться ссылкой "Наверх", когда находишься ближе к нижней части страницы.

    Можно реализовать эту возможность исключительно средствами HTML и CSS, однако в данном видео я покажу вам, как можно доработать эту функцию и сделать ее более удобной с помощью библиотеки jQuery.

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

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

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

    Демонстрацию работы скрипта и подробный разбор кода смотрите в видео ниже.



    Краткий обзор урока (все подробности смотрите в видео):

    index.html

    1. Первое , что нам нужно - это файл, в котором будет размещена сама ссылка "Наверх". Пусть это будет index.html .

    Для того, чтобы все работало, в секции head документа нам нужно подключить файл стилей и два JavaScript-файла (о них - чуть позже):

    Сначала подключаем библиотеку jQuery, затем - файл script.js с кодом, который мы пишем сами.

    Также в этом файле нам нужно разместить саму ссылку, при клике по которой будет происходить плавный подъем к верхней части страницы:

    Наверх

    script.js

    2. Второе - это файл script.js, в котором мы прописываем функции, выполняющие основные действия:

    $(document).ready(function(){ $(function (){ $("#back-top").hide(); $(window).scroll(function (){ if ($(this).scrollTop() > 700){ $("#back-top").fadeIn(); } else{ $("#back-top").fadeOut(); } }); $("#back-top a").click(function (){ $("body,html").animate({ scrollTop:0 }, 800); return false; }); }); });

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

    Далее мы фиксируем событие прокрутки окна и если прокрутка идет вниз на 700 пикселей и более, то мы плавно отображаем кнопку "Наверх" с помощью метода fadeIn . В противном случае мы ее скрываем методом fadeOut .

    Во второй анонимной функции мы отслеживаем событие клика по ссылке внутри блока #back-top и применяем метод animate для плавного подъема к верхней части страницы (scrollTop:0) за 800 мс.

    style.css

    3. И, третье - это файл стилей. В нашем примере в нем нет ничего лишнего, поэтому стилей мало:

    Body { font-size: 13px; line-height: 1.65em; font-family: Verdana, sans-serif; } p { margin-left: 150px; } /* Кнопка наверх */ #back-top{ position:fixed; bottom:10px; left: 0px; } #back-top a{ width:55px; display:block; text-align:center; font:11px/100% Arial, Helvetica, sans-serif; text-transform:uppercase; text-decoration:none; background-color: transparent; -webkit-transition:1s; -moz-transition:1s; transition:1s; } /* графическая стрелка */ #back-top span{ width:55px; height:1600px; display:block; margin-bottom:7px; background: url("../img/up-arrow.png") no-repeat bottom center; -webkit-transition:1s; -moz-transition:1s; transition:1s; } #back-top a:hover span{background-color: rgba(0, 0, 0, 0.3);}

    Из того, о чем стоит упомянуть, можно назвать значение fixed для свойства position у блока #back-top . Это позволяет нам зафиксировать положение кнопки относительно окна браузера.