chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[jQuery] Efektowny link/przycisk „Do góry”

Ta wersja
blog.piotrnalepa.pl/2009/10/03/jquery-efektowny-linkprzycisk-do-gory
Opublikowano
Autor
, Staff Software Engineer
Kategoria
JavaScript
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 17 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

Dzisiaj postanowiłem przedstawić Tobie małą, ale często przydatną rzecz jaką jest link powrotu do początku strony.

Pewnie się zastanawiasz, co w tym takiego wyjątkowego? No to Ci odpowiem. Użyję do tego celu biblioteki jQuery przez co link będzie się pojawiał w rogu strony w momencie gdy strona będzie przewinięta. Fajnie, co nie?

Ale jak to zrobić? To już Ci pokażę.

Zaczynamy od kodu HTML:

Przykład 1HTML
<a href="#top" id="top-link">Wróć do początku</a>

Teraz czas na trochę CSS'a:

Przykład 2CSS
#top-link {
	display: none;
	position: fixed;
	right: 5px;
	bottom: 5px;
	color: #fff;
	font-weight: bold;
	text-decoration: none;
	border: 1px solid #000;
	background: #b30000;
	padding: 10px;
	*height: 1.5%;
}

Zapewne się teraz zacząłeś zastanawiać, a co oznacza zapis "*height: ..."?

Oznacza to specjalny zapis stylu, który będzie odczytywany tylko przez IE7.

Jeśli byś chciał określić styl dla IE6 (który powinien przestać być uzywany) to skorzystasz z zapisu "height: ...". Dzięki temu nie musisz tworzyć osobnego stylu dla IE.

OK, teraz pora na trochę Javascriptu.

Przykład 3JavaScript
jQuery.fn.topLink = function(settings) {
	settings = jQuery.extend({
		min: 1,
		fadeSpeed: 200,
		ieOffset: 50
		}, settings);
		return this.each(function() {
		//listen for scroll
		var el = $(this);
		el.css('display','none'); //in case the user forgot
		$(window).scroll(function() {
			if(!jQuery.support.hrefNormalized) {
				el.css({
					'position': 'absolute',
					'top': $(window).scrollTop() + $(window).height() - settings.ieOffset
				});
			}
			if($(window).scrollTop() >= settings.min)
			{
				el.fadeIn(settings.fadeSpeed);
			}
			else
			{
				el.fadeOut(settings.fadeSpeed);
			}
		});
	});
};
$(document).ready(function() {
	$('#top-link').topLink({
		min: 400,
		fadeSpeed: 500
	});
	//smoothscroll
	$('#top-link').click(function(e) {
		e.preventDefault();
		$.scrollTo(0,300);
	});
});
Należy pamiętać o tym by dołączyć do pliku HTML plik z biblioteką jQuery oraz rozwinięcie tej biblioteki plik: jQuery.ScrollTo, który można pobrać STĄD

I to by było na tyle. Demo z tego artykułu - Efektowny powrót do góry.

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!