Как сделать кнопку вверх в html
Перейти к содержимому

Как сделать кнопку вверх в html

  • автор:

Кнопка «Наверх» или Scroll To Top своими руками

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

Посмотреть живое демо можно здесь.

Для создания такой кнопки нужно подредактировать файлы HTML, CSS и JavaScript вашего сайта.

HTML

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

CSS

В файле стилей CSS зададим размер, цвета, позицию и эффект при наведении нашей стрелки. Использованный нами HTML символ стрелки изначально направлен вправо и при помощи кода CSS мы развернем его против часовой стрелки, чтобы направить его вверх:

 #back2Top < width: 40px; line-height: 40px; overflow: hidden; z-index: 999; display: none; cursor: pointer; -moz-transform: rotate(270deg); -webkit-transform: rotate(270deg); -o-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); position: fixed; bottom: 50px; right: 0; background-color: #DDD; color: #555; text-align: center; font-size: 30px; text-decoration: none; >#back2Top:hover

JavaScript

Теперь добавим на страницу код JavaScript. При этом следует убедиться, что подключена библиотека jQuery.

Скрипт проверяет высоту прокрутки страницы, и когда она достигнет 100px, выводит наш виджет. Кроме этого еще один обработчик события ожидает нажатия на кнопку, и когда это происходит плавно перематывает к началу страницы:

 /* Прокручивает страницу вверх при нажатии на кнопку */ $(window).scroll(function() < var height = $(window).scrollTop(); if (height >100) < $('#back2Top').fadeIn(); >else < $('#back2Top').fadeOut(); >>); $(document).ready(function() < $("#back2Top").click(function(event) < event.preventDefault(); $("html, body").animate(< scrollTop: 0 >, "slow"); return false; >); >); 

Кнопка «Вверх» с плавной автопрокруткой

Кнопка

Учитывая популярность мобильных устройств и адаптивной верстки, сайты стали растягиваться в длину на несколько экранов, соответственно, когда текст длинный, то прокрутить страницу вверх уже тяжело. Для удобства пользователей добавляют кнопку «Вверх». Однако простая реализация кнопки с помощью якоря, прокручивает страницу рывком. Использование JS или jQuery помогает решить эту проблему сделав кнопку плавной прокрутки.

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

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

Добавлять в HTML код ничего не нужно. Кнопка добавляется автоматически. Итак, как добавить кнопку Вверх на сайт? Вначале подключите в head библиотеку jQuery.

Затем подключите ниже библиотеку с кодом кнопки.

Для оформления кнопки добавьте в CSS два класса, которые описывают обычное состояние ссылки и ее hover состояние.

position : fixed ;
bottom : 25px ;
right : 10px ;
cursor : pointer ;
display : none ;
width : 50px ;
height : 20px ;
background : #c0c0c0 ;
#go-top:hover < background : #333 ;

Как обычно, посмотреть решение можно на CodePen

See the Pen ZWWrdP by Alex (@Asmodey) on CodePen.

или скачать готовое с GitHub.

Рубрика: HTML и CSS. Дата 07.01.2017

Еще статьи:

Конспект по HTML. Часть 1

Анимация текста при наведении мыши

Устанавливаем RubyGems

HTML 5 (часть 2). Новые теги и поддержка браузерами

Кнопка «Вверх» с плавной автопрокруткой : 2 комментария

  1. abookz.net15.06.2017 в 11:24 Вот таким образом реализуется плавная прокрутка скролла на jQuery , а также плавный вывод кнопки » Наверх » при соответствующем положении скролла.

Кнопка наверх для сайта html

Кнопка наверх для сайта html

Создать кнопку «наверх» для сайта не представляет особых усилий.

Давайте же создадим её на языках html,css и jquery.

Html нужен для разметки, css — для оформления.

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

Создание кнопки наверх

1. Добавим между тегами «body» разметку нашей кнопки.

Вместо текста, можно вставить картинку или блок.

2. Добавим немного оформления на CSS.

#toTop

3. Подключим библиотеку Jquery перед закрывающем тегом body(Если её нет).

4. Теперь вставим наш скрипт на jquery после подключения библиотеки jquery.

$(function () < $.fn.scrollToTop = function () < $(this).hide().removeAttr("href"); if ($(window).scrollTop() != "0") < $(this).fadeIn("slow") >var scrollDiv = $(this); $(window).scroll(function () < if ($(window).scrollTop() == "0") < $(scrollDiv).fadeOut("slow") >else < $(scrollDiv).fadeIn("slow") >>); $(this).click(function () < $("html, body").animate(, "slow") >) > >); // Вызов $(function () < $("#toTop").scrollToTop(); >); 

Здесь две функции, в первой мы прописываем все эффекты, во второй мы вызываем эту функцию для определённого объекта, в нашем случае это #toTop.

Вот так просто мы и создали кнопку «наверх».

Кнопка вверх для прокрутки страницы сайта в начало

Процесс создания кнопки вверх начнём с HTML-разметки:

В качестве изображения будем использовать SVG-изображение, которое установим с помощью CSS как background-image :

.btn-up { /* фиксированное позиционирование */ position: fixed; /* цвет фона */ background-color: #673ab7; /* расстояние от правого края окна браузера */ right: 20px; /* расстояние от нижнего края окна браузера */ bottom: 0; /* скругление верхнего левого угла */ border-top-left-radius: 8px; /* скругление верхнего правого угла */ border-top-right-radius: 8px; /* вид курсора */ cursor: pointer; /* отображение элемента как flex */ display: flex; /* выравниваем элементы внутри элемента по центру вдоль поперечной оси */ align-items: center; /* выравниваем элементы внутри элемента по центру вдоль главной оси */ justify-content: center; /* ширина элемента */ width: 60px; /* высота элемента */ height: 50px; } .btn-up::before { content: ""; width: 40px; height: 40px; background: transparent no-repeat center center; background-size: 100% 100%; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z'/%3E%3C/svg%3E"); } .btn-up_hide { display: none; } @media (hover: hover) and (pointer: fine) { .btn-up:hover { background-color: #512da8; /* цвет заднего фона при наведении */ } }

В этом коде мы элементу устанавливаем фиксированное позиционирование, то есть position: fixed . Для определение того, где должен располагаться элемент относительно краёв окна браузера, мы задаём следующие свойства: right: 20px и bottom: 0 .

Выравнивание псевдоэлемента ::before по центру внутри .btn-up выполним с помощью CSS Flexbox. Для этого .btn-up установим следующие свойства: display: flex , align-items: center и justify-content: center .

Шаг 2. Написание JavaScript кода

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

При нажатии на кнопку .btn-up будем прокручивать страницу к началу с анимацией.

Для выполнения этих действий нам необходимо написать JavaScript код. Выполним это на чистом JavaScript:

JavaScript

const btnUp = { el: document.querySelector('.btn-up'), show() { // удалим у кнопки класс btn-up_hide this.el.classList.remove('btn-up_hide'); }, hide() { // добавим к кнопке класс btn-up_hide this.el.classList.add('btn-up_hide'); }, addEventListener() ); // при нажатии на кнопку .btn-up document.querySelector('.btn-up').onclick = () => { // переместим в начало страницы window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); } } } btnUp.addEventListener();

Здесь мы оформили весь код в формате объекта. Для выбора необходимых элементов на странице мы использовали здесь метод querySelector , а для добавления обработчиков событий – свойство DOM-объекта onclick и метод addEventListener . В результате мы получили следующее:

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

Использование другого SVG-изображения

В примере, приведённом выше, мы использовали SVG-изображение. Вместо этого изображения можно использовать любое другое:

.btn-up { position: fixed; background-color: #673ab7; right: 20px; bottom: 20px; border-radius: 22px; cursor: pointer; width: 44px; height: 44px; } .btn-up::before { content: ""; text-align: center; position: absolute; width: 20px; height: 20px; left: 12px; top: 12px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cg fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 17V4M3 10l7-7 7 7'/%3E%3C/g%3E%3C/svg%3E"); }

Кроме изменения SVG-изображения, мы также поменяли здесь некоторые другие стили:

Круглая кнопка для перемещения в начало страницы

Изменение цвета фона и других свойств кнопки

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

Пример квадратной кнопки, в которой в качестве цвета фона ( background-color ) используется #3aa111 :

Квадратная кнопка для перемещения в начало страницы

Кнопка с плавным появлением и скрытием

Чтобы кнопка плавно появлялась и исчезала можно воспользоваться CSS-переходами.

Для этого в CSS необходимо внести следующие изменения:

.btn-up { position: fixed; /* фиксированная позиция */ background-color: #673ab7; /* цвет заднего фона */ right: 20px; /* расстояние от правого края */ bottom: 0px; /* расстояние от нижнего края */ border-top-left-radius: 8px; /* скругление верхнего левого угла */ border-top-right-radius: 8px; /* скругление верхнего правого угла */ cursor: pointer; /* форма курсора */ display: flex; /* не отображать элемент */ align-items: center; justify-content: center; transition: opacity 0.3s ease-in-out; width: 60px; height: 50px; opacity: 1; } .btn-up::before { content: ""; width: 40px; height: 40px; background: transparent no-repeat center center; background-size: 100% 100%; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z'/%3E%3C/svg%3E"); } .btn-up_hide { display: none; } .btn-up_hiding { opacity: 0; } @media (hover: hover) and (pointer: fine) { .btn-up:hover { background-color: #512da8; /* цвет заднего фона при наведении */ } }

Также необходимо отредактировать JavaScript код, например, так:

JavaScript

const btnUp = { el: document.querySelector('.btn-up'), scrolling: false, show() { if (this.el.classList.contains('btn-up_hide') && !this.el.classList.contains('btn-up_hiding')) { this.el.classList.remove('btn-up_hide'); this.el.classList.add('btn-up_hiding'); window.setTimeout(() => { this.el.classList.remove('btn-up_hiding'); }, 300); } }, hide() { if (!this.el.classList.contains('btn-up_hide') && !this.el.classList.contains('btn-up_hiding')) { this.el.classList.add('btn-up_hiding'); window.setTimeout(() => { this.el.classList.add('btn-up_hide'); this.el.classList.remove('btn-up_hiding'); }, 300); } }, addEventListener()  // при прокрутке окна (window) window.addEventListener('scroll', () => { const scrollY = window.scrollY  this.scrolling = false; // если пользователь прокрутил страницу более чем на 200px if (scrollY > 400) { // сделаем кнопку .btn-up видимой this.show(); } else { // иначе скроем кнопку .btn-up this.hide(); } }); // при нажатии на кнопку .btn-up document.querySelector('.btn-up').onclick = () => { this.scrolling = true; this.hide(); // переместиться в верхнюю часть страницы window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); } } } btnUp.addEventListener();

Для добавления и удаления классов у элементов мы в этом коде использовали методы add и remove объекта classList . При этом часть этих действий выполняли не сразу, а спустя некоторое время, используя для этого метод setTimeout .

Кнопка вверх с плавным появлением и скрытием, при нажатию на которую выполняется скроллинг в начало страницы

Выезжающая снизу кнопка вверх

В этом примере сделаем так, чтобы кнопка вверх появлялась снизу. Выполнять это будем с помощью CSS-свойств transform и transition . Кроме этого, SVG-изображение вставим с использованием тега :

.btn-up { position: fixed; background-color: #f57c00; left: 20px; bottom: 30px; border-radius: 25px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: opacity 0.15s ease-in-out, transform 0.3s ease-in-out; color: #fff; width: 50px; height: 50px; opacity: 1; transform: translateY(0); } .btn-up_hide { display: none; } .btn-up_hiding { opacity: 0; transform: translateY(100px); } .btn-up-icon { width: 40px; height: 40px; fill: currentcolor; } @media (hover: hover) and (pointer: fine) { .btn-up:hover { background-color: #ef6c00; } }

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *