Якорь на верх страницы с прогресс баром, HTML+CSS+jQuery

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

Для добавления якоря с прогресс баром нужно:

  1. Подключить библиотеку jQuery.
  2. Скачать и подключить плагин knob.js.
  3. Вывести HTML часть якоря, добавить к нему стили и привязать скрипт.

Как подключить библиотеку jQuery

Есть несколько способов подключить библиотеку jQuery: скачать файл в папку или подключить напрямую.
Рассмотрим второй вариант.

Для подключения рекомендую использоваться подключение от Google Developers. Наша задача скопировать строку:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

и вставить эту строчку перед закрывающимся тегом </head>


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<!--Подключаем библиотеку-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
</head>
</body>
</body>
</html>

Как скачать плагин и добавить его на сайт

Скрипт плагина можно скачать тут

Добавьте файл в Вашу папку со скриптами и подключите его, добавлением строки после подключения библиотеки jQuery.


<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<!--Подключаем библиотеку-->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
	<script src="/js/knob.js"></script>
</head>
<body>
</body>
</html>

Добавляем якорь и привязываем к нему скрипт

Теперь нужно добавить html код нашей кнопки, которая будет прокручивать экран вверх, стилизовать с помощью  css и прикрутить скрипт


<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<!--Подключаем библиотеку-->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
	<script src="/js/knob.js"></script
	<link rel="stylesheet" href="/css/style.css" media="all"/>
</head>
<body>
	<div class="progress-bar">
	<input type="text" class="dial" readonly="readonly" style="display: none; width: 0px; visibility: hidden;">
	<a href="#" class="btn-top" title="Вверх">	<i class="fa fa-angle-up" aria-hidden="true">	</i>	</a> // Тут для значка кнопки мы используем стрелку вверх из шрифтов fontawesom, вы также можете использовать изображения или символы
	</div>
	<script>
		var offset = 100,
		scroll_top_duration = 700,
		$back_to_top = jQuery('.btn-top'),
		$thedial = jQuery('.dial'),
		$progress_bar = jQuery('.progress-bar');
		$thedial.knob({
			'min' : 0, // минимальное значение прогресс бара (минимум 0)
			'max' : 100, // максимальное значение прогресс бара (максимум 100)
			'width' : 50, // ширина элемента
			'height' : 50, // высота элемента
			'fgColor' : '#f06317', // цвет бара
			'skin' : 'tron',
			'thickness' : .1, // ширина линии
			'displayInput' : false, // отображать поле 
			'displayPreview' : false, // отображать значение
			'readOnly' : true // только для чтения
		});
		jQuery(window).scroll(function(){
			( jQuery(this).scrollTop() > offset ) ? $progress_bar.addClass('is-visible') : $progress_bar.removeClass('is-visible'); // добавление класса к кнопке при прокрутке страницы для её появления
			var s = jQuery(window).scrollTop(), // высота от верхней части
			d = jQuery(document).height(), // переменная для высоты html документа
			c = jQuery(window).height(); // высота экрана пользователя
			scrollPercent = (s / (d-c)) * 100; // расчет прогресс бара
			jQuery('.dial').val(scrollPercent).change();
		});
// событие на нажатие кнопки
		$back_to_top.on('click', function(e){
			e.preventDefault();
			$('body,html').animate({
				scrollTop: 0 ,
			}, scroll_top_duration
			;);
		});
	</script>
</body>
</html>

Добавим CSS код в файл стилей


.btn-top{
font-size: 40px;
height: 60px;
width: 60px;
line-height: 60px;
position: fixed;
left: 25px;
bottom: 28px;
color: #f06317 !important;
text-align: center;
text-decoration: none;
display: flex;
justify-content: center;
align-items: center;
}
.icon-angle-up:before {
content: "⟩";
}
.progress-bar {
background: transparent;
width: 50px;
border-radius: 50%;
height: 50px;
position: fixed;
bottom: 30px;
left: 30px;
visibility: hidden;
opacity: 0;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
transition: all 0.3s;
z-index: 9999;
border: none;
box-shadow: none !important;
}
.is-visible {
visibility: visible;
opacity: 1;
}
audio, canvas, progress, video {
display: inline-block;
vertical-align: baseline;
}

Результат Вы можете видеть у нас на сайте:)