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

Если вы хотите сделать ваш сайт чуть более удобней для посетителей, то пора бы задуматься о кнопке scroll to top, или, как ее еще называют “вернуться наверх страницы”. Но, мы ведь хотим не просто олдскульную кнопку с href=”#” 🙂

Как сделать кнопку scroll to top на jQuery

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

В данном примере мы не будем рассматривать подробно CSS кнопки, я уверен вы и так знаете, что блок с фразой “вернуться наверх” или иконкой (что на мой взгляд куда симпатичнее смотрится), должен обязательно иметь position fixed или position absolute.

Рассмотрим сам код нашего файла script.js (который тоже нужно подключить, но только после подключения jQuery):

$(function(){
	//scroll to top
	$('.button-up').click(function(){
		$('html, body').animate({ scrollTop: 0 }, 500);
		return false;
	});
});

button-up – класс нашей кнопки, например, можно создать в конце вашего документа div с таким классом. По клику происходит анимация к самому верху страницы, за пол секунды, т.к. в javascript все время указывается в миллисекундах. Для увеличения анимации можно поменять 500 на 1000, но мы даже тут будем экономить 🙂

return false мы пишем только для того, чтобы отменить событие по умолчанию – клик по ссылке с атрибутом href=”#” не будет переходить по ней (в данном случае переход к id на странице).

Как отобразить кнопку на jQuery при прокрутке страницы

Для решения этой задачи сделаем так, чтобы наша кнопка scroll-to-top была скрыта по умолчанию при загрузке страницы. Ваш HTML код должен быть приблизительно следующим (в этот раз рассмотрим именно пример с тегом a, чтобы убедиться в работе return false):

<a href="#" class="button-up hidden"></a>

Пишем в CSS:

.hidden {display:none}

При загрузке нашей страницы мы не видим эту кнопку. Добавим событие при скролле:

$(function(){

	//scroll to top
	$('.button-up').click(function(){
		$('html, body').animate({ scrollTop: 0 }, 500);
		return false;
	});


	//show up-button
	$(document).scroll(function(){
		var y = $(this).scrollTop();
		if (y > 800) {
			$('.button-up').removeClass('hidden');
		} else {
			$('.button-up').addClass('hidden');
		}
	});

});

Добавляем функцию при скролле документа и проверяем какая у нас текущая высота, если она больше 800 пикселей, то убираем класс hidden. Со стилями я думаю вы и сами разберетесь. Можно также добавить анимацию плавного появления этой кнопки при помощи CSS3 или немного изменив нашу функцию:

//show up-button
$(document).scroll(function(){
	var y = $(this).scrollTop();
	if (y > 800) {
		$('.button-up').fadeIn();
	} else {
		$('.button-up').fadeOut();
	}
});

В данном случае нам и класс не понадобился, а какой способ предпочитаете вы? 🙂

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *