Bizonyára megfordult már a webmaster fejében a gondolat: Jó lenne, ha a sablon felső részén lévő menü az oldal görgetésével nem tűnne el, hanem továbbra is látható lenne a képernyő tetején. Az eredeti - angol - leírás a http://docs.gantry.org/gantry5/theme-development/theme-customization címen erre három módszert tartalmaz, ebből a szerzők által ajánlott, harmadik módszert mutatjuk be cikkünkben.
A lépések a következők:
1.) Szerezzük be headroom.min.js fájlt a http://wicky.nillia.ms/headroom.js/ címről (a tömörebb, kisebb méretű "Production" verziót kell letölteni) és töltsük fel a THEME_DIR/custom/js/ mappába. (A szkript közvetlen linkje: https://raw.githubusercontent.com/WickyNilliams/headroom.js/v0.7.0/dist/headroom.min.js)
2.) Ahhoz, hogy oldalunk tudtára adjuk a headroom.js script létezését, az Atoms szekcióban be kell ezt állítani:
3.) A következő lépésben a </body> tag elé helyezzük be az alábbi scriptet. Ezt a sablonkezelő "Page Settings" fülön, a "Global Page settings" című lapon, a "Body Attributes" blokkban tehetjük meg. Ez a script fogja a custom/js/ mappában lévő másik scriptet működtetni, amikor azt érzékeli, hogy oldalunkat görgetjük.
<script> // grab an element var myElement = document.querySelector("#g-navigation"); // construct an instance of Headroom, passing the element var headroom = new Headroom(myElement); // initialise headroom.init(); // grab an element var myElement = document.querySelector(".g-offcanvas-toggle"); // construct an instance of Headroom, passing the element var headroom = new Headroom(myElement); // initialise headroom.init(); </script>
A fenti script a #g-navigation szekcióra van hatással, mert alapesetben ebbe a szekcióba kerül a menü. Ha oldalunkon a menü nem a Navigation szekcióban, hanem a Header szekcióban van, akkor a szkriptben az idézőjelek között írjuk át a #g-navigation szöveget #g-header-re.
A szkript második része engedélyezi szkript használatát a mobil eszközökön az Offcanvas szekció számára.
4.) A következő lépésben ki kell egészítenünk a custom.scss stíluslap fájlt az alábbi definíciókkal:
(egyik típus)
@import "dependencies"; #g-navigation.headroom--not-top { position: fixed; width: 100%; top: 0; z-index: 1001; left: 0; } .g-offcanvas-toggle.headroom--not-top { position: fixed; z-index: 1002; } .g-offcanvas-open { #g-navigation.headroom--not-top { left: $offcanvas-width; } .g-offcanvas-toggle.headroom--not-top { left: $offcanvas-width + 0.7rem; } } #g-navigation.headroom--not-top, .g-offcanvas-toggle.headroom--not-top { @include transition(all 0.3s); }
(másik típus) Ez egy kicsit rafináltabb megjelenítési mód, ehhez viszont az alábbi kódot kell a custom.scss-be illeszteni.
A kettő közötti különbséget a frontenden lehet tesztelni.
@import "dependencies"; //Fixed Header On Scroll - Advanced .headroom { @include transition(transform 200ms linear); } .headroom--pinned { @include transform(translateY(0%)); } .headroom--unpinned { @include transform(translateY(-100%)); } #g-navigation.headroom--not-top { position: fixed; width: 100%; top: 0; z-index: 1001; left: 0; } .g-offcanvas-toggle.headroom--not-top { position: fixed; z-index: 1002; &.headroom--unpinned { top: 0; } } .g-offcanvas-open { #g-navigation.headroom--not-top { left: $offcanvas-width; } .g-offcanvas-toggle.headroom--not-top { left: $offcanvas-width + 0.7rem; } } #g-navigation.headroom--not-top, .g-offcanvas-toggle.headroom--not-top { @include transition(all 0.3s); }
A custom.scss kiegészítése után természetesen ne felejtsük el újrafordítani azt a [Recompile CSS] gombra kattintással.
A fentiekben bemutatott, nem túl sok munkával látványos módon fejleszthetjük és jobban kezelhetővé tehetjük oldalunkat.