Jak vytvořit responzivní menu? Příklady. Responzivní menu na CSS3

Všichni weboví vývojáři už dávno vědí, že weby je třeba udělat tak, aby byly responzivní, ale ne každý ví, jak to udělat správně. V této lekci se naučíte, jak vytvořit responzivní menu pro web.

Pro názornost uděláme jednu sekci s velkým obrázkem na pozadí, skládající se ze záhlaví s logem a vodorovného menu.

HTML značky

Úkol je jasný, uvnitř tagu sekce bude hlavička webu, uvnitř kterého bude blok div s logem a navigační lišta nav. Bude použit jako kontejner pro nabídku seznamů s odrážkami ul s položkami nabídky-odkazy a .








  • Domov

  • Vyhledávání

  • Služby

  • Zprávy

  • Fotografie

  • Pravidla





Struktura HTML vypadá jako obvykle velmi jednoduše – čistý kód a nic nadbytečného, ​​hezky se na to kouká. Pokud se však podíváte na výsledek v prohlížeči, budete chtít rychle otevřít soubor stylů a začít věci vypadat lépe.

To je to, co teď uděláme.

Styling sekce - sekce

V našem případě sekce zabírá první obrazovku počítače a štítek sekce je vyplněn velkou fotografií na pozadí, na které budou umístěny všechny ostatní prvky.

Sekce (
pozadí: url(bg.jpg);
}

Musíme zajistit, aby pozadí, aniž by narušilo proporce fotografie, vyplnilo veškerý volný prostor na jakémkoli zařízení.

Velikost pozadí: obálka;
výška: 100vh;

Při prohlížení na velkých monitorech, pokud není fotografie dostatečně velká, se začne množit. Zakažme opakování na pozadí.

Opakování na pozadí: bez opakování;

Na mobilních telefonech bez vystředění pozadí může být oříznuto.

Pozice pozadí: střed uprostřed;

Sekce je připravena, do ní napíšeme styly pro záhlaví.

Stylování záhlaví webu

Pojďme trochu předskočit a uvidíme, z jakých bloků se bude hlavička skládat – jedná se o div blok s logem a navigační navigační blok.

Jak postavit dva bloky za sebou, protože bloky ve své přirozené podobě stojí jeden pod druhým? Metoda Flexbox si s tímto úkolem dokonale poradí – zarovná a zarovná jej vzhledem k kontejneru záhlaví tak, jak potřebujeme.

záhlaví(
displej: flex;
justify-content: mezera-mezi;
align-items: center;
}

Vlastnost box-shadow vykresluje spodní stín pod záhlaví, čímž vizuálně odděluje záhlaví webu od obsahu. Je vhodnější nastavit výšku záhlaví nikoli v pixelech, ale v relativních jednotkách, například v procentech, pak budou zachovány proporce prvků webu na jakékoli obrazovce.

Výška: 18 %;
box-shadow: 0 5px 15px rgba(0,0,0,.2);

Vidíme výsledek flexboxu a stínu, který se objeví níže.

Práce s logem

Nyní je logo přitisknuto k levému okraji okna prohlížeče, posuneme jej trochu doprava.

img loga (
levý okraj: 2,3 em;
}

Díky následujícímu kódu bude logo responzivní.

Max-šířka: 100 %;

Styling menu - ul

Odstraňte značky z položek nabídky.

ul(
list-style-type: none;
}

Vertikální nabídku změníme na vodorovnou, přičemž vše zarovnáme na střed pomocí metody flexbox. Vlastnost přechodu zajišťuje hladký chod efektu hover, o tom později.

ul(
displej: flex;
flex-flow: nowrap;
směr ohybu: řádek;
justify-content: center;
align-items: center;
přechod: ,5s;
}

Položky nabídky li jsou velmi blízko u sebe a musíme pracovat s písmem a odkazy.

Nastavíme okraje kolem položek nabídky.

Ulli a (
odsazení: 10px 20px;
}

Text uděláme velkými písmeny a odstraníme podtržení odkazů.

Text-transform: velká písmena;
text-dekorace: žádná;

Pro kontrast zvolíme tmavší písmo a uděláme ho tučným (nesnáším, když barva textu splývá s barvou pozadí webu).

Barva: #262625;
váha písma: tučné;

Vytvořte jednoduchý efekt vznesení a nezapomeňte na hladký přechod.

Ulli a:hover (
pozadí: #000;
barva: #fff;
přechod: 0,5s
}

V další lekci učiníme naše menu tak, aby reagovalo na dotazy médií. Celý kód naleznete na jsfiddle.

Ne všechny projekty vyžadují zbytečné efekty, které mohou stránky výrazně zatěžovat, zejména pokud jde o adaptivní layout, kdy si uživatel může web prohlížet na chytrých telefonech či tabletech. Většina těchto efektů je vytvořena pomocí JavaScriptu, proto jsem se jako příklad rozhodl ukázat, jak si můžete udělat jeden z nejdůležitějších prvků webu, totiž navigační menu, prakticky bez použití JS, ale většinou pouze pomocí CSS. Je naprosto nemožné odmítnout použití JS z toho důvodu, že na mobilních zařízeních a běžných počítačích či noteboocích je mnoho událostí odlišných a pokud na počítači v CSS můžeme vlastnost bezpečně používat :vznášet se, pak to na tabletu nebude fungovat tak, jak bychom chtěli. Ti nejnetrpělivější mohou okamžitě ( v příkladu změňte šířku okna prohlížeče).

Stanovili jsme si tedy následující úkol: vytvořit nabídku, která je flexibilní na šířku, s přepnutím na její mobilní verzi, kde se nabídka rozbalí při najetí myší nebo kliknutí na tlačítko. Struktura HTML je pro takové prvky typická, kromě toho, že přidáváme ještě jeden prvek – tlačítko pro rozbalení/skrytí nabídky v mobilní verzi:

CSS není úplně standardní. Uděláme, aby se naše menu chovalo, jako bychom používali stůl. Hned bych chtěl zdůraznit, že ne všechny prohlížeče podporují vlastnosti, které budeme používat. Problémy mohou nastat u verzí IE nižších než verze 8 ( i když je čas přestat se na ně soustředit) a existuje několik malých problémů s IE8, ale níže napíšu, jak je vyřešit.

* ( margin: 0; padding: 0; ) header ( background-color: #C0C0C0; ) #menu ( display: table; /* popis níže */ width: 100%; border-collapse: Collapse; -webkit-box- sizing: border-box; /* popis níže */ -moz-box-sizing: border-box; /* popis níže */ velikost boxu: border-box; tabulka-řádek; /* popis níže */ barva-pozadi: #FFFFFF; styl-listu: žádný; menu ul li a ( display: inline-block; width: 100%; height: 50px; line-height: 50px; font-size: 1.2em; text-align: center; ) #menu ul li a:hover ( background- barva: #990000; barva: #FFFFFF; ) #nav_button ( displej: žádný; šířka: 50px; výška: 50px; velikost písma: 2,5 em; zarovnání textu: na střed; barva pozadí: #FFFFFF; ohraničení: 1px plný #949494; kurzor: ukazatel; ) @media screen and (max-width: 600px) ( /* popis níže */ #menu ( display: inline-block; position: relativní; width: auto; ) #menu ul ( display: žádný;

pozice: absolutní;

nahoře: 0;

zobrazení: tabulka-řádkový; Prvek se bude chovat jako
displej: tabulka-buňka; Prvek se bude chovat jako nebo box-sizing: border-box; (a s předponami dodavatele) Při výpočtu šířky a výšky prvku budou vlastnosti width a height zahrnovat hodnoty okrajů ( vycpávka) a hranice (

pohraniční

). Je to nutné, aby se zabránilo vzhledu horizontálního rolování, protože bez této vlastnosti se při šířce nabídky 100 % přidá i tloušťka ohraničení, a pokud je, tak se přidá padding.

Tento kód zapíšeme do samostatného souboru js a vložíme ho úplně dole na stránku, před uzavírací značku. Nyní pár slov o kompatibilitě mezi prohlížeči... Pokud počítáte s Internet Explorerem nižší než verze 9, pak pro jeho správné fungování je potřeba v tagu propojit dva opravné skripty:

První umožňuje starším prohlížečům adekvátně vnímat HTML5 tagy a druhý umožňuje „mediální dotazy“, se kterými se také nekamarádí. I když na druhou stranu se takové prohlížeče na mobilních zařízeních nepoužívají a stejnou značku lze nahradit . Zda tyto skripty použít nebo ne je tedy samozřejmě vaše osobní rozhodnutí, ale považuji je za nadbytečné. Nyní je nabídka připravena k použití na jakémkoli zařízení.

Velmi často, zejména začátečníci, v honbě za pomyslnou krásou webu jej přeplňují zbytečnou grafikou, skripty, které při provádění nějaké drobné akce někdy váží více než celá stránka. Nechoďte do extrémů a myslete na ty uživatele, kteří k vám mají přístup nejen z různých zařízení, ale také přes nízkorychlostní připojení k internetu. Hodně štěstí! ;)

Navrhuji ke zvážení techniku ​​pro vytvoření jednoduchého, velmi flexibilního nastavení a také docela účinného, ​​adaptivního menu, využívajícího čistě sémantické značení, pro implementaci adaptivního designu, bez připojení javascriptu. Výsledkem je, že pomocí CSS získáme nabídku, kterou lze zarovnat doleva, doprava nebo umístit přesně do středu, zvýraznit aktivní/aktuální položky, nabídku, která se může rychle přeskupit při změně velikosti okna prohlížeče, do rozevíracího vertikálního navigačního panelu, který vypadá skvěle na obrazovkách různých mobilních uživatelských zařízení (tablety, chytré telefony, notebooky a mobilní telefony).

Podívali jsme se na příklad a ujistili se, že naše menu funguje. Tato metoda je obecně velmi užitečná, když nabídka používá velké množství odkazů. Všechna tlačítka můžete snadno seskupit do jednoho atraktivního panelu, který se otevře při najetí myší.


HTML značky

Nejprve si musíme označit celou hlavní strukturu našeho jídelníčku. Vytváříme navigační prvek, což znamená, že je logické a dokonce praktické použít HTML5 prvek, značku se stejnojmennou třídou, která je k němu přiřazena, pro následné formátování stylů CSS, ale i vytváření a absolutní umístění rozbalovací navigační lišta. Aktuální třída ukazuje na aktivní / aktuální odkaz nabídky, jejíž vzhled bude vytvořen pomocí css.

  • Domov
  • O nás
  • Portfolio
  • Naše služby
  • Kontakty

Jak vidíte, menu je jednoduchý neuspořádaný seznam s určitým počtem odkazů. Počet bodů může být různý, ale i tak není třeba se rozčilovat, vše je v rozumných mezích.
Dále, než zajdeme příliš daleko, chci vám připomenout a vysvětlit těm, kteří nevědí, že HTML5 a mediální dotazy nejsou podporovány verzemi IE staršími než 9 (není to vůbec překvapivé). Abychom se v budoucnu vyhnuli bolestem hlavy a udělali vše správně, existují speciální skripty, s jejichž pomocí můžeme vyřešit problém s kompatibilitou jejich prozíravým připojením k dokumentu v sekci.

Vše. Vyřešili jsme základní označení, zapsali jsme třídy a přidali berle. Nyní přejděme k definování stylů položek nabídky, tvarování vzhledu a přizpůsobení naší nabídky.

CSS definující styly

Sada stylů nabídky CSS pro obrazovky stolních monitorů je celkem standardní. Nevidím smysl zacházet do podrobností. Chci vás jen upozornit na skutečnost, že jsem místo prvku float:left zadal display:inline-block

  • v navigačním kontejneru nav . To umožní zarovnat položky nabídky doleva, doprava a přesně na střed zadáním vlastnosti zarovnání textu k položce seznamu
      .

      /* menu */ .nav ( margin : 20px 0 ; ) .nav ul ( margin : 0 ; padding : 0 ; ) .nav li ( margin : 0 5px 10px 0 ; padding : 0 ; list-style : none ; display : inline-block ; * display : inline ; /* ie7 */ ) .nav a ( padding : 3px 12px ; text-decoration : none ; color : #999 ; line-height : 100 % ; ) .nav a : hover ( color : #000 ; ) .nav .current a ( pozadí : #999 ; barva : #fff ; border-radius : 3px ; )

      /* nabídka */ .nav ( margin: 20px 0; ) .nav ul ( margin: 0; padding: 0; ) .nav li ( margin: 0 5px 10px 0; padding: 0; list-style: none; display: inline-block; *display:inline; /* ie7 */ ) .nav a ( padding: 3px 12px; text-decoration: none; color: #999; line-height: 100%; ) .nav a:hover ( color : #000; ) .nav .current a ( pozadí: #999; barva: #fff; border-radius: 3px; )

      Sekce .nav a:hover a .nav .current a jsou zodpovědné za změnu barvy odkazů a pozadí aktivních/aktuálních položek nabídky. V tomto příkladu jsem se nesnažil být příliš chytrý, vše jsem dělal v duchu minimalismu, když najedete na odkaz, změní se barva, text se změní na černou barvu: #000; , a pro aktivní položky jsem přidal pozadí: #999; , nahradil barvu písma bílou barvou: #fff; a okraje trochu zaoblily border-radius: 3px; u výsledného tlačítka. V tomto ohledu můžete fantazírovat a experimentovat podle libosti.

      Zarovnejte na střed a doprava

      Jak jsem uvedl výše, můžeme změnit zarovnání navigačních položek pomocí vlastnosti text-align přidáním několika řádků kódu CSS:

      /* nabídka vpravo */ .nav .right ul ( zarovnání textu : vpravo ; ) /* nabídka uprostřed */ .nav .center ul ( zarovnání textu : střed ; )

      /* nabídka vpravo */ .nav.right ul ( zarovnání textu: vpravo; ) /* nabídka uprostřed */ .nav.center ul ( zarovnání textu: střed; )

      Přizpůsobení jídelníčku

      Zábava začíná. Naše nabídka v této fázi má gumový formát (šířka se určuje v procentech) a ještě není vůbec adaptivní. Začněte měnit velikost obrazovky a uvidíte, že nabídka je zabudována do chaotické změti tlačítek.


      Situaci napravíme pomocí mediálních dotazů. V bodě aplikace dotazu na média na 600px jsem nastavil relativní umístění na pozici: relativní; pro prvek nav, abychom mohli později umístit seznam nabídky

        nahoře v absolutní poloze poloha: absolutní; . Pomocí vlastnosti display: none skryjeme všechny položky nabídky li, ponecháme pouze aktuálně aktivní odkazy s aktuální třídou a přiřadíme jim vlastnost display: block
        Když umístíte kurzor na seskupenou navigační lištu, všechny položky nabídky by se měly zobrazit jako rozevírací seznam, proto definujeme pravidlo .nav ul:hover li pomocí kódu funkce>display: block . U aktivních/aktuálních položek přidáváme ikonu, která je zvýrazní od ostatních.
        Pokud potřebujete přesunout nabídku doprava nebo ji vycentrovat, použijte vlastnosti umístění vlevo a vpravo pro seznam ul naší nabídky.

        @media screen and (max-width: 600px) (.nav (pozice: relativní; min-height: 40px;).nav ul (šířka: 180px; odsazení: 5px 0; pozice: absolutní; nahoře: 0; vlevo: 0 ; border : solid 1px #aaa ; pozadí : #FAFAFA url (images/icon-menu.png ) no-repeat 10px 11px : 5px : 0 1px 2px rgba ( 0 , 0 , . 3 ; .nav li ( display : none ; /* skrýt vše
      • body */ okraj : 0 ;
      • ) .nav .current ( display : block ; /* zobrazí pouze aktuálně aktivní
      • items */ ) .nav a ( display : block ; padding : 5px 5px 5px 32px ; text-align : left ; ) .nav .current a ( background : none ; color : #666 ; ) /* při najetí myší na položky nabídky * / .nav ul: hover ( background-image : none ; ) .nav ul: hover li ( display : block ; margin : 0 0 5px ; ) .nav ul : hover current ( background : url ( images/icon-check. png ) no-repeat 10px 7px ) /* responzivní nabídka vpravo */ .nav .right ul ( vlevo : auto ; vpravo : 0 ; ) /* responzivní nabídka uprostřed */ .nav .center ul ( vlevo : 50 % ) okraj-levý : -90px ;

      • @media screen and (max-width: 600px) ( .nav ( position: relativní; min-height: 40px; ) .nav ul ( width: 180px; padding: 5px 0; position: absolute; top: 0; left: 0 ; border: solid 1px #aaa background: #FAFAFA url(images/icon-menu.png) no-repeat 10px 11px border-radius: 0 1px 2px rgba(0,0,0,. 3) .nav li ( zobrazit: žádné; /* skrýt vše
      • body */ okraj: 0;

        ) .nav .current ( zobrazení: blok; /* zobrazí pouze aktuálně aktivní

        items */ ) .nav a ( display: block; padding: 5px 5px 5px 32px; text-align: left; ) .nav .current a ( background: none; color: #666; ) /* při najetí myší na položky nabídky * / .nav ul:hover ( background-image: none; ) .nav ul:hover li ( display: block; margin: 0 0 5px; ) .nav ul:hover .current ( background: url(images/icon-check. png) no-repeat 10px 7px ) /* responzivní nabídka vpravo */ .nav.right ul ( vlevo: auto; vpravo: 0; ) /* responzivní nabídka uprostřed */ .nav.center ul ( vlevo: 50 % levý okraj: -90px;
        Volný překlad a úprava: Andrey /řidič/

        Portál se složitým menu. Rozhodli jsme se psát skripty pouze v případě, že na internetu nenajdeme to, co potřebujeme. Bylo navrženo několik různých navigací s různými funkcemi. Naštěstí pro nás se našlo skoro všechno kromě jednoho. Těsně před zahájením prací na sepsání tohoto menu jsme však ještě stihli najít to, co jsme potřebovali.
        Vyzkoušeli jsme docela dost adaptivních menu. V tomto tématu jsem se rozhodl udělat výběr těch nejcennějších a nejzajímavějších, které jsme museli vyzkoušet. Všechny adaptivní nabídky nejsou stejné a jsou určeny výhradně pro konkrétní úkoly.
        Tak. Zde je 5 adaptivních menu pro všechny příležitosti.

        flexMenu Toto je přesně to menu, které bylo tak těžké najít a o jehož funkčnosti jsme se chystali začít psát.
        flexMenu - nabídka, která je vhodná pro stránky s dynamicky se měnící šířkou. Jeho hlavní a unikátní vlastností je přidání položky „Více“ a přesun do jejího rozbalovacího seznamu položek, které se nevejdou do šířky celé navigace. To znamená, že pokud se podíváme na velké monitory, uvidíme všechny body. Jakmile začneme zmenšovat okno prohlížeče, objeví se na konci nabídky položka „Více“ a položky, které se při zmenšování okna nevejdou, se dynamicky přesunou do jeho rozevíracího seznamu. Budeme tak mít menu s pevnou výškou a „hrací“ šířkou.
        Při práci s flexMenu jsme narazili na jeden problém. V našem případě bylo vpravo logo s float: left;, vpravo bylo toto menu také s float: left; a vpravo s plovákem: vpravo; byl tam další blok. Při změně velikosti okna prohlížeče se ukázalo, že blok vpravo naskočil pod nabídku, poté toto vše naskočilo pod logo a poté byla aktivována funkce komprese nabídky. Jak se vypořádat s touto funkcí rozvržení, bude diskutováno v následujících tématech. Zůstaňte naladěni. Kódování responzivního navigačního menu Skvělý příklad navigačního menu. Když změníme velikost okna prohlížeče, uvidíme, že se položky navzájem překrývají a jsou zarovnány na šířku. Vypadá velmi úhledně. A co je nejdůležitější, toto adaptivní menu bude vypadat skvěle na mobilních zařízeních a hlavně se snadno používá na zařízeních s dotykovým displejem.

        Víceúrovňová plochá nabídka – adaptivní navigace Víceúrovňová plochá nabídka je adaptivní víceúrovňová nabídka, která funguje pomocí knihoven Jquery. Na stolních monitorech vidíme obvyklé, známé horizontální menu. Na mobilních zařízeních se horizontální navigace transformuje na rozevírací seznam.
        Víceúrovňové ploché menu je skvělou volbou, pokud potřebujete ušetřit místo na stránce.

        Adaptivní menu pro moderní web není jen luxus, ale nutnost. Množství moderních zařízení vyžaduje, aby webmasteři vytvořili rozložení, které se logicky zobrazí na obrazovkách různých rozlišení. A v některých případech je vytvoření responzivního menu mnohem obtížnější než samotný design, a proto je nutné tento problém zvážit.

        Nabídka pro velkou obrazovku

        Chcete-li porozumět obecnému rozložení nabídky, musíte nejprve vytvořit strukturu nabídky v HTML a upravit ji pomocí CSS. Na základě obdrženého materiálu pak můžete adaptivní šablonu vylepšit. Takže struktura HTML bude vypadat takto.

        Dvoupoložkové menu v HTML

        Do výsledné nabídky budete muset přidat styly CSS. Měly by udávat velikost a barvu písma, pozadí a umístění bloku.

        Proces registrace

        Vytvoření jednoduché funkcionality pro běžnou obrazovku počítače je jednoduché a je to vidět na příkladu. Adaptivní nabídka pro web se vytvoří pouze tehdy, když je s čím pracovat, tedy když již byly přidány navigační položky. Nejoptimálnější možností nabídky pro mobilní zařízení a tablety bude ikona hamburgeru - čtvercové pole, ve kterém se po stisknutí otevřou všechny položky nabídky. Chcete-li vytvořit takovou navigaci, musíte do dokumentu HTML přidat značky.

        Dále budete muset k těmto značkám přidat vhodné styly, abyste vytvořili vizuálně přitažlivé a čitelné menu. Kromě vizuálního provedení ikony navigace a menu je potřeba podle toho navrhnout i polohu obrázku. Je tedy zavedena podmínka menu_icon span:nth-child(1) (horní:0 px); To znamená, že odsazení obrázku shora bude nula pixelů. Podobně musíte nastavit hodnoty pro ostatní strany.

        Nyní je responzivní menu téměř hotové. Stojí za to věnovat pozornost podmínce: Ve výchozím nastavení nebude ikona nabídky na webu viditelná, takže do dokumentu CSS musíte přidat další třídu s následující podmínkou: .menu__icon (display: inline-block;) . Tím se navigace zviditelní.

        Kromě toho musíte do šablony kaskádových stylů přidat úkol, který podle potřeby skryje odstavce a pododstavce. K tomu je potřeba nastavit pevnou pozici nabídky v CSS, navrhnout zobrazení a zarovnání. Položky jsou skryty pomocí podmínek overflow:auto; neprůhlednost:0; z-index:1000. Můžete také přidat třídu menu__links-item, která bude označovat styl položek nabídky, ale to je na žádost vývojáře.

        Dokončovací dotek

        CSS responzivní menu je tedy téměř kompletní. Aby se po kliknutí na ikonu zobrazila, je potřeba přidat funkce. Pro jednoduchost je lepší použít jQuery, ale pokud chcete, můžete si vytvořit čistý JavaScript. V obou případech bude použita stejná podmínka:

        • (function($)($(function() $(".menu__icon").on("click", function() $(this).closest(".menu").toggleClass("menu_state_open");)) ;));)) (jQuery).

        Tím je rozvržení adaptivní navigace ukončeno. Ale to je jen jedna z několika možností pro vytvoření tohoto druhu funkčnosti, takže stojí za to zvážit ostatní. Alespoň pár z nich.

        Beze změny standardů

        Většina uživatelů internetu očekává, že v horní části webu uvidí navigační panel. To se již stalo jakýmsi standardem, takže adaptivní horizontální menu by mělo mít decentní vzhled. To lze provést pomocí CSS, a to jak ve výše uvedených příkladech, tak připojením skriptu handleru. Obecně se vytvoření responzivního menu skládá ze 3 kroků:

      • Psaní HTML tagů
      • Upravte je pomocí kaskádových stylů (CSS).
      • Úprava stávajícího menu.
      • Všechny weby mají přirozeně své vlastní lišty nabídek, ale pokud je zdroj vytvořen na CMS, bude mnohem snazší vytvořit novou adaptivní nabídku.

        Bootstrap

        Vytváření responzivní funkčnosti není tak vážný problém, pokud používáte nástroje Bootstrap. Šablony pro vytvoření horizontálního menu jsou zde již rozloženy. Stačí se připojit k prostředku souboru bootstrap.js. S pomocí tohoto rámce získá webmaster možnost vytvořit navigaci jakékoli složitosti. Responzivní nabídka s Bootstrap je vytvořena pomocí nějakého kódu.

        Vlastnosti metody

        Tento kód může být těžkopádný, ale je srozumitelný. Za zmínku stojí, že hlavní roli zde hraje tag nav, který je zodpovědný za tvorbu navigace a její vzhled. Zde jsou také připojeny kontejnery nádoba-tekutina A kontejner, kterým se nastavuje šířka bodů. S jejich pomocí můžete vynutit rozbalení nabídky na obrazovkách různých rozlišení nebo ji nechat zafixovanou.

        Třídy zde hrají důležitou roli při vytváření adaptivní funkčnosti. kolaps A navbar-collapse kteří jsou zodpovědní za styl. Samotné menu vzniká zapisováním položek, které jsou umístěny vodorovně.

        Pokud použijete tento rámcový kód k vytvoření navigace, bude na širokoúhlých obrazovkách vypadat jako horizontální banner. Na začátku bude název zdroje a poté položky v přesně určeném pořadí. Na úzkých obrazovkách se zobrazí pouze název webu a ikona hamburgeru, na kterou se po kliknutí zobrazí položky nabídky ve vertikálním seznamu.

        Rozbalovací nabídka

        Skvělým pomocníkem pro vytvoření responzivního rozbalovacího menu bude zdroj Bootstrap. Chcete-li to provést, jednoduše vyměňte řádek tagu

      • z předchozího příkladu do kódu níže.

        Rozbalovací položky

        To lze provést pro jednu položku nebo pro několik. Poblíž pozice s rozbalovacími podpoložkami se objeví šipka směřující dolů. Po kliknutí se zobrazí vytvořený seznam. Pokud je navigace zobrazena na malé obrazovce, pak bude položka s rozevíracím seznamem rovněž označena šipkou, ale se směrem doprava. Po kliknutí se zobrazí další vertikální seznam dílčích položek.

        Víceúrovňové menu

        Tvořit však můžete nejen pomocí Bootstrapu. Pokud tato knihovna není připojena, můžete vytvořit responzivní víceúrovňovou nabídku pomocí HTML a CSS a poté připojit funkci PHP.

        Nejprve musíte vytvořit neuspořádaný seznam v souboru HTML, který obsahuje další seznamy. Chcete-li to provést, měli byste použít standardní značky

          A
        • . Neměli bychom zapomínat ani na tvorbu tříd, které budou později zpracovávány kaskádovými styly CSS. Aby to bylo jasnější, stojí za to uvést malý příklad psaní seznamů a vytváření tříd.

          Animace responzivní rozevírací nabídky se nastavuje pomocí kaskádových stylů. Zde je třeba zadat parametry pro nabídku při zmenšení obrazovky o 50, 75 a 25 %. Tento přístup k vytváření adaptivní funkčnosti zajišťuje kompetentní uspořádání, ve kterém se menu „nepohybuje“.

          A nakonec musíte do dokumentu zadat níže uvedenou funkci.

          Pokud web nepromyslel použití jiných funkcí než toto, musíte pro něj ještě vytvořit samostatný dokument skriptu. Pokud jej napíšete do prostého HTML, jednoduše se objeví v okně prohlížeče jako součást textu a nebude fungovat.

          JQuery

          Dalším skvělým řešením by bylo vytvoření navigační lišty pomocí pluginu JQuery. Adaptivní menu na takové službě trvá jen několik minut. Samotný plugin je ke stažení na internetu, má jednoduché a přehledné rozhraní, které se snadno a jednoduše používá. Takže by neměly být žádné problémy s připojením souboru stylů.

          Po připojení souboru stylu musíte napsat skript pro vytvoření adaptivní navigace.

          Poté musíte vytvořit navigaci, pokud již neexistuje. Vše zde funguje podle zásady: „Všechno důmyslné je jednoduché“. V dokumentu HTML musíte vytvořit seznam s odrážkami ve značce nav. Můžete použít již uvedený příklad nebo jeho zjednodušenou verzi, která vypadá jako ten na obrázku níže.

          V této fázi práce se v prohlížeči zobrazí pouze logo a samotné menu bude skryto. Aby se zobrazil, musíte přidat funkci, která způsobí změny pluginu – okayNav.

          var navigace = $("#nav-main").okayNav();

          Nyní se můžete podívat na výsledky práce. Při běžné šířce okna prohlížeče vypadá tato nabídka úplně normálně, ale pokud zmenšíte obrazovku, poslední položky zmizí. Místo toho se objeví tři velké tečky umístěné svisle. Po stisknutí se zdá, že se převrátí, zaujmou vodorovnou polohu a skryté položky nabídky se zobrazí ve svislém seznamu v pravém horním rohu obrazovky.

          Toto řešení vypadá velmi moderně a použitý animační efekt staví zdroj do příznivého světla pro návštěvníky.

          Joomla

          A poslední možnost pro vytvoření adaptivního menu pomocí systému Joomla. Jedná se o bezplatnou službu vytváření webových stránek, která je redakčním systémem CMS. A jak již bylo zmíněno na samém začátku, pokud byl web vytvořen pomocí CMS a potřebujete změnit stávající menu na adaptivní, pak je nejlepší začít s tvorbou funkčnosti webu od prvního tagu. Stejně jako v předchozích příkladech musíte vytvořit seznam nabídek s odrážkami v HTML. Pouze pro každou položku musíte napsat vlastní třídu. Celkově vše vypadá jako níže.

          Dále musíte přidat styly. Nejlepší je nastavit všechny výplně na 0 px a použít box-sizing: border-box. To umožní zachovat zadanou šířku prvků bez ohledu na počet odsazení. Dále byste měli nastavit šířku nadřazeného prvku nabídky (div) na 90 % a poté začít stylovat každou položku samostatně.

          Můžete odstranit okraje, změnit barvu a výplň a vytvořit design, který se objeví, když najedete kurzorem. Jedním slovem udělejte vše, co bude odpovídat designu zdroje. Posledním krokem při vytváření responzivního menu Joomla je jeho převod. Nejčastěji Joomla vytváří menu, které se při změně velikosti obrazovky automaticky přestaví a rozdělí do několika řádků. To vše se provádí v CSS, jedinou funkcí, kterou je třeba zahrnout, je podmínka pro různé prohlížeče. Umožňuje, aby nabídka vypadala stejně v různých prohlížečích.

          Funkce napříč prohlížeči

          Vytvoření responzivního menu opravdu není jednoduché, vyžaduje znalosti a zkušenosti. Všechny popsané příklady jsou jen malou částí možných variací, ale i ony mohou být užitečné, pokud má člověk základní znalosti HTML a CSS.



           Nahoru