A vissza a tetejére gomb az a dolog, amit sokan, valószínűleg sok webhelyen már láttak. Ez az a nyíl, amely a weboldal jobb alsó sarkában jelenik meg, amikor görgetni kezdesz. Ha rákattintasz, visszakerülsz az oldal tetejére.
Ha weboldalt tervezel és szeretnél hozzáadni egy vissza a tetejére gombot, vagy csak kíváncsi vagy arra, hogyan építhetsz ki egyet, üdvözlünk a fedélzeten!
Ha magyar nyelvről angolra szeretnél váltani, kattints bátran ide: Creating a Back to Top Button with CSS & jQuery
Vissza a jövőbe tetejére
A kód két részből áll: a CSS stílusból és egy kis jQuery szkriptből. Kezdjük a CSS-el.
CSS stílus gombhoz
Kezdjük azzal, hogy stílusokat és jelöléseket hozunk létre a gombunkhoz. Itt van a HTML rész:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <a id="button"></a>
A gomb csak egy horgonycímkét tartalmazhat egy id gombbal. A FontAwesome könyvtárhoz egy linket is hozzáveszünk, hogy használhassunk egy ikont a gombunkhoz.
A gomb kezdeti stílusai így fognak kinézni:
#button { display: inline-block; background-color: #FF9800; width: 50px; height: 50px; text-align: center; border-radius: 4px; margin: 30px; position: fixed; bottom: 30px; right: 30px; transition: background-color .3s; z-index: 1000; } #button:hover { cursor: pointer; background-color: #333; } #button:active { background-color: #555; }
Mivel a gomb egy horgony elem, és a horgonyok alapértelmezés szerint inline elemek, meg kell változtatnunk a megjelenítési tulajdonságot az inline blokkra úgy, hogy hozzá tudjunk rendelni dimenziókat.
Legyen egy négyzet alakú gomb, 50 * 50px, lekerekített 4px sarkokkal. Világos narancssárga színt adunk és mindkét oldalon 30px margót.
A rögzített pozíció mindig lehetővé teszi, hogy a gombunk ugyanazon a helyen maradjon, amikor lapozunk az oldalra, és a nagyon magas számú z-index biztosítja, hogy a gomb mindig átfedjen más weboldal elemekkel.
Amikor egy gomb fölé mutatunk, a kurzor egy mutatóra vált, és a háttér sötétszürke lesz. Annak érdekében, hogy az átmenet zökkenőmentes legyen, 0,3 másodperces átmenetet adunk a háttérszín tulajdonságnak. Továbbá, ha rákattintunk a gombra, a háttérszín is változik, és kicsit világosabbá válik.
Ikon hozzáadása
Jelenleg a mi gombunk üres, ezért adjunk hozzá egy ikont. Ehhez hozzátesszük egy olyan::utána
pszeudo-elemet, mint ez :
#button::after { content: "\f077"; font-family: FontAwesome; font-weight: normal; font-style: normal; font-size: 2em; line-height: 50px; color: #fff; }
Az ikont a FontAwesome legnépszerűbb betűtípus-könyvtárából választjuk ki. Úgy döntöttem, hogy egy Chevron Up ikonnal megyek.
Ha pszeudo elemként szeretnéd megjeleníteni, állítsd be a betűtípuscsaládot és rendeld hozzá az ikon Unicode értékét a tartalomhoz.
Győződj meg róla, hogy a vonalmagassága megegyezik az ikon magasságával, ha azt szeretnéd, hogy vízszintesen a középpontja legyen.
Funkcionalitás hozzáadása a jQuery segítségével
Ebben a részlegben megmutatom, hogyan fog a gomb a várt módon működni. Ennek legegyszerűbb módja a JavaScript-könyvtár jQuery használata. Először meg kell adnunk a jQuery-t kódunk HTML-jelöléséhez. Add hozzá ezt a kódsorozatot, mielőtt bezárnád a testcímkét.
<script src=”https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js”></script>
Most a szkriptet a jQuery szintaxis segítségével írhatjuk. Add hozzá a következő szkriptet a jQuery sor után:
<script> jQuery(document).ready(function() { var btn = $('#button'); $(window).scroll(function() { if ($(window).scrollTop() > 300) { btn.addClass('show'); } else { btn.removeClass('show'); } }); btn.on('click', function(e) { e.preventDefault(); $('html, body').animate({scrollTop:0}, '300'); }); }); </script>
Vessünk egy közelebbi pillantást a szkriptre.
Látni fogod a kód első sorát:
jQuery(document).ready(function() {
Alapvetően azt mondja, hogy csak akkor futtasd a kódot ebben a funkcióban, ha a dokumentum teljesen be van töltve. Ez nagyszerű módja annak, hogy megakadályozzuk a hibákat abban az esetben, ha JavaScript kódod olyan weblaprészek módosítását akarná, amelyek nincsenek teljesen betöltve a böngészőben.
A dokumentum után futó kód teljesen betöltve két fő kódból áll, ahol mindegyik a maga dolgát végzi.
A parancsfájl első része megjeleníti a gombunkat, és eltűnik, miután az oldal gördülése elér egy bizonyos pontot. A második rész az oldalt felülre görgeti, miután rákattintunk a gombra. Vizsgáljuk meg ezeket részletesen.
A gomb megjelenése és eltűnése
Ezt a kódot kell használni:
var btn = $('#button'); $(window).scroll(function() { if ($(window).scrollTop() > 300) { btn.addClass('show'); } else { btn.removeClass('show'); } });
Először egy btn változót deklarálunk, és a gomb egy ID-vel rendelkező elemére mutatjuk, hogy könnyebben megérthessük később a kódot. Ez segít a JavaScriptnek a számítás gyorsabb elvégzéséhez. Miután az elemet egy változóba tároljuk, a JavaScriptnek nem kell többször átkutatnia az egész oldalt, amikor újra kell használni a kódot.
A jQuery-nek van egy praktikus funkciója .scroll (). Megköt egy kódrészt, amelyet minden egyes alkalommal végre kell hajtani, amikor a weboldalon egy görgetési esemény történik. Alkalmazható bármelyik görgethető elemhez, mint pl. a keretekhez, de általában az ablakelemre alkalmazzuk, mivel a legtöbb esetben a görgetés itt történik, beleértve a példát is.
$(window).scroll(function() {
A függvényen belül ezt az if / else utasítást tesszük:
if ($(window).scrollTop() > 300) { btn.addClass('show'); } else { btn.removeClass('show'); }
Itt megpróbáljuk ellenőrizni a gördítősáv függőleges helyzetét, és megjeleníteni a gombunkat, ha egy bizonyos pont alatt van, és eltűnik, ha az a fenti pont fölött van.
A görgetősáv aktuális pozíciójának eléréséhez beépített jQuery módszert használunk .scrollTop (). Egyszerűen visszatér több olyan képponthoz, amely a gördíthető terület felett van elrejtve.
Tehát minden alkalommal, amikor görgetünk, a JavaScript ellenőrzi, hogy hány pixel rejtőzik, és összehasonlítja őket egy számmal. Esetünkben ezt a számot 300-ra állítottam, de megváltoztathatod, ha akarod.
Ha átlépjük a 300px-t, hozzáadunk egy bemutató osztályt a gombelemhez, ami megjeleníti. Ha a szám kevesebb, mint 300, eltávolítjuk az adott osztályt. Az osztályok hozzáadása és eltávolítása egy másik oka annak, hogy a jQuery annyira népszerű. Ezt két egyszerű módszerrel tehetjük meg: addClass () és removeClass ().
Azonban a CSS-ben még nincs bemutató osztályunk, ezért add hozzá:
if ($(window).scrollTop() > 300) { btn.addClass('show'); } else { btn.removeClass('show'); }
Alapértelmezés szerint a mi gombunk rejtve lesz, ezért még néhány szabályt kell hozzáadnunk a #button elemhez:
#button { transition: background-color .3s, opacity .5s, visibility .5s; opacity: 0; visibility: hidden; }
Az átmenet megkönnyítése érdekében hozzáadtam még két értéket az átmeneti attribútumhoz, az átlátszóság és a láthatóság 0,5 másodpercre van állítva.
Görgetés a tetejére
A szkript második része lehetővé teszi, hogy a gomb megnyomása után az oldal tetejére görgess.
btn.on('click', function(e) { e.preventDefault(); $('html, body').animate({scrollTop:0}, '300'); });
Az első jQuery módszer itt látható on(). Első paramétere a "click" JavaScript esemény, amely minden egyes alkalommal feltűnik, amikor egérkattintást hajtunk végre a böngészőnkben. A második paraméter egy kezelő funkció, amely az esemény bekövetkezte után azonnal aktiválódik.
A kezelő funkció egy eseményparamétert használ. Megnevezhetjük, amit akarunk, de általában az e vagy az event ajánlott. Az eseményparamétert meg kell adnunk annak érdekében, hogy a preventDefault () metódussal átadjuk a függvénynek és használjuk.
Az e.preventDefault () eljárás megakadályozza, hogy az esemény alapértelmezett művelete megtörténjen, például egy hivatkozás nem vezet minket a következő oldalra. A mi esetünkben ez nem döntő jelentőségű, hiszen a horgonyelemünkben nincs href attribútum, és egyébként sem vezetne el egy új oldalra, de mindig jobb a kettős ellenőrzés.
A jQuery. Anima () metódus az, amelyik az egész trükköt végzi.
$('html, body').animate({scrollTop:0}, '300');
Az .animate () módszer első paramétere a tulajdonságok listája, amelyet animálni kell. Tulajdonságunk neve scrollTop, és azt szeretnénk, hogy az értéke legyen 0. A paraméter típusa sima objektum, ezért használjuk a göndör zárójeleket, és írjuk le az értékeket a kulcs / érték páros szintaxissal.
A második paraméter a sebesség, amellyel animációnkat szeretnénk futtatni. Ezt milliszekundumban mérik, és minél magasabb a szám, annál lassabb az animáció. Az alapértelmezett 400, de 300-ra változtattam.
Végül alkalmazzuk az animált módszert a HTML és a testelemekre weboldalunkon.
Most minden alkalommal, amikor rákattintunk a gombra, az az oldal tetejére vezet.
Demó
Láthatjuk a végeredményt ebben a CodePen demóban. Demonstrációs célból hozzáadtam néhány minta szöveget.
Tekintsd meg a Vissza a tetejére gombot Matthew Caintől (@matthewcain) a CodePenen.
Záró gondolatok
A vissza a tetejére gombok nagyszerű használhatósági elemei egy weboldalnak, s noha apró, de hasznos részletet ad hozzá a webes forráshoz. Remélhetőleg ez az útmutató segített kiszélesíteni a CSS- és JavaScript-ismereteidet, és olyan "a-ha" pillanatokat biztosít, amelyek hasznosak lehetnek a webes tervezők és fejlesztők számára.
További jó hackelést!