Jak vytvořit citlivou navigaci
Jedna z nejtěžších částí odpovědný na webové stránce “Navigace”, tato část je opravdu důležitá pro přístupnost webových stránek, protože to je jeden ze způsobů, jak návštěvníci přes webové stránky přeskakují.
Existuje vlastně mnoho způsobů, jak vytvořit citlivé webové stránky navigace a dokonce i některé jQuery pluginy jsou k dispozici, aby to za sekundu.
Avšak místo toho, abychom v tomto postu aplikovali okamžité řešení, jdeme na vás jak vytvořit jednoduchou navigaci ze země a pomocí CSS3 mediálních dotazů a malého jQuery jej zobrazit v malé velikosti obrazovky jako smartphony správně.
Začněme.
- Demo
- Stáhněte si zdroj
HTML
Nejdříve přidejme meta viewport uvnitř hlava
štítek. Tento meta viewport značka je nutná, aby se naše stránka mohla správně měnit v libovolné velikosti obrazovky, zejména v mobilním pohledu.
… A poté přidejte následující úryvek jako navigační značku uvnitř tělo
štítek.
Jak vidíte nahoře, máme šest primárních odkazů na menu a po nich přidáme ještě jeden odkaz. Tento dodatečný odkaz bude použit sem navigaci v menu, pokud je skrytá na malé obrazovce.
Další čtení: Nezapomeňte na metaznačku výřezu.
Styly
V této sekci začneme styling navigace. Styl zde je pouze dekorativní, můžete si vybrat libovolné barvy, jak si přejete. Ale v tomto případě my (já osobně) chci tělo
mít jemnou a krémovou barvu.
tělo barva pozadí: # ece8e5;
nav
, která definuje navigaci bude mít 100%
celou šířku okna prohlížeče, zatímco ul
kde budou obsahovat naše primární odkazy na menu 600px
pro šířku.
nav výška: 40px; šířka: 100%; pozadí: # 455868; velikost písma: 11pt; font-family: 'PT Sans', Arial, sans-serif; font-weight: tučné; poloha: relativní; hraniční dno: 2px pevné # 283744; nav ul padding: 0; okraj: 0 auto; šířka: 600px; výška: 40px;
Pak budeme plovák
menu vlevo, takže budou zobrazeny vodorovně vedle sebe, ale plovoucí prvek také způsobí jejich rodičovský kolaps.
nav li zobrazit: inline; plavat vlevo;
Pokud si všimnete z výše uvedeného značení HTML, přidali jsme ji clearfix
v třída
atribut pro oba nav
a ul
Vymazat věci kolem, když plaveme prvky uvnitř tohoto CSS clearfix hack. Přidejme tedy následující pravidla stylu do šablony stylů.
.clearfix: before, .clearfix: after content: ""; displej: tabulka; .clearfix: po clear: oba; .clearfix * zoom: 1;
Vzhledem k tomu, že máme šest odkazů na nabídku a máme také kontejner pro 600px
, odkazy na jednotlivé nabídky budou mít 100px
pro šířku.
nav a color: #fff; displej: inline-block; šířka: 100px; zarovnání textu: střed; text-decoration: žádný; line-height: 40px; textový stín: 1px 1px 0px # 283744;
Odkazy na menu budou odděleny 1px
pravý okraj, s výjimkou posledního. Zapamatujte si náš předchozí příspěvek na boxu, šířka menu bude rozšířena o 1px
dělat to 101px
jako hraniční sčítání, takže tady změníme velikost krabice
modelu rámeček
aby zůstalo menu zachováno 100px
.
nav li a border-right: 1px pevné # 576979; velikost krabice: rámeček; -moz-box-velikosti: hraniční box; -webkit-box-sizing: border-box; nav li: last-child a border-right: 0;
Dále bude menu mít jasnější barvu, když je v :vznášet se
nebo :aktivní
Stát.
nav a: hover, nav a: active background-color: # 8c99a4;
… A nakonec bude tento odkaz skrytý (pro obrazovku na ploše).
nav a # pull zobrazit: žádný;
V tomto okamžiku jsme pouze styling navigace a nic se nestane, když změním velikost okna prohlížeče. Tak pojďme na další krok.
Další čtení: CSS3 Box-sizing (Hongkiat.com)
Média dotazy
CSS3 mediální dotazy se používají k definování toho, jak se budou styly posouvat v některých určitých bodech přerušení nebo konkrétně velikosti obrazovky zařízení.
Protože naše navigace je zpočátku 600px
fix-width, nejprve definujeme styly, když je prohlížen 600px
nebo nižší velikost obrazovky, tak prakticky, tento je náš první bod zlomu.
V této velikosti obrazovky bude každý ze dvou odkazů nabídky zobrazen vedle sebe, takže ul
Šířka zde bude 100%
okna prohlížeče, zatímco odkazy na menu budou mít 50%
pro šířku.
@media screen a (max-width: 600px) nav výška: auto; nav ul width: 100%; zobrazení: blok; výška: auto; nav li width: 50%; plavat vlevo; poloha: relativní; nav li a border-bottom: 1px pevné # 576979; border-right: 1px pevná # 576979; nav a text-align: vlevo; šířka: 100%; text-indent: 25px;
… A pak také definujeme, jak se bude navigace zobrazovat, když se obrazovka zmenší 480px
nebo nižší (takže toto je naše druhé místo).
V této velikosti obrazovky se začnou zobrazovat další odkazy, které jsme přidali dříve, a také odkaz a “Jídelní lístek” na pravé straně pomocí tlačítka :po
pseudo-element, zatímco primární odkazy nabídky budou skryté, aby se na obrazovce uložily více svislých mezer.
@ Pouze obrazovka a (max-width: 480px) nav border-bottom: 0; nav ul display: none; výška: auto; nav a # pull zobrazení: blok; barva pozadí: # 283744; šířka: 100%; poloha: relativní; nav a # pull: after content: ""; pozadí: url ('nav-icon.png') no-repeat; šířka: 30px; výška: 30px; displej: inline-block; pozice: absolutní; vpravo: 15px; top: 10px;
Nakonec, když se obrazovka zmenší o 320px
menu se zobrazí svisle shora dolů.
@ Pouze obrazovka a (max-width: 320px) nav li zobrazit: blok; float: none; šířka: 100%; nav li a border-bottom: 1px pevné # 576979;
Nyní můžete zkusit změnit velikost okna prohlížeče. Nyní by měl být schopen přizpůsobit velikost obrazovky.
Další čtení: Média dotazy pro standardní zařízení.
Zobrazení nabídky
V tomto okamžiku bude nabídka stále skryta a bude viditelná pouze tehdy, když ji budete potřebovat klepnutím nebo klepnutím na tlačítko “Jídelní lístek” odkaz a my můžeme dosáhnout efektu pomocí jQuery slideToggle ()
.
$ (function () var pull = $ ('# pull'); menu = $ ('nav ul'); menuHeight = menu.height (); $ (pull) .on ('click', funkce (e) e.preventDefault (); menu.slideToggle ();););
Když však změníte velikost okna prohlížeče ihned po zobrazení a skrytí nabídky na malé obrazovce, nabídka zůstane skrytá, zobrazení: žádné
styl generovaný jQuery je stále připojen v elementu.
Musíme tedy tento styl odstranit při změně velikosti okna takto:
$ (window) .resize (function () var w = $ (okno) .width (); if (w> 320 && menu.is (': hidden')) menu.removeAttr ('style'); );
V pořádku, to jsou všechny kódy, které potřebujeme, nyní si můžeme prohlédnout navigaci z následujících odkazů a doporučujeme vám to otestovat v responzivním testovacím nástroji, jako je Responsinator, abyste si ji mohli prohlédnout najednou v různých šířkách.
- Demo
- Stáhněte si zdroj
Bonus: Alternativní způsob
Jak jsme již dříve zmínili v tomto příspěvku, existují i jiné způsoby, jak to udělat, a pomocí knihovny JavaScript nazvané SelectNav.js je jedním z nejjednodušších způsobů. Jedná se o čistý JavaScript, který se nespoléhá na jinou knihovnu třetích stran jako jQuery.
V podstatě to bude duplikovat vaše seznam menu a převést ji do V rozevírací nabídce pak můžete vybrat, který z nich je skrytý nebo zobrazen v závislosti na velikosti obrazovky prostřednictvím mediálních dotazů.
Jednou z výhod, které se mi v této praxi líbí, je to, že se nemusíme starat o styl navigace jako o menu bude používat nativní uživatelské rozhraní ze samotného zařízení.
Další implementaci naleznete v oficiální dokumentaci.
Závěr
Prošli jsme celou cestou k vytvoření citlivé navigace od nuly. Toto, které jsme zde vytvořili, je jen jedním z příkladů, a jak jsme již dříve uvedli v tomto příspěvku a ukázali nahoře, existuje mnoho dalších řešení, která můžete realizovat. Tak, to je nyní nechat na vaše rozhodnutí vybrat si praxi, která nejlépe vyhovuje požadavku a vaše webové stránky navigační strukturu.