Come configurare smartphone e PC. Portale informativo
  • casa
  • Consigli
  • Come creare un menu CSS orizzontale. Conversione del menu in verticale

Come creare un menu CSS orizzontale. Conversione del menu in verticale

Dall'autore: benvenuto nel nostro blog sulla costruzione del sito. Questa è una serie di articoli dedicati alla nuova specifica e oggi vorrei raccontarvi come creare un menu in html5 e come questo processo differisce dallo stesso nelle versioni precedenti del linguaggio.

Quali sono le differenze

Prima di tutto, vorrei dire che anche la specifica non è così nuova: ha iniziato la sua formazione nel 2009. In realtà, da allora c'è stato uno sviluppo costante: nuove opportunità appaiono in html5, i browser moderni supportano sempre di più queste stesse funzionalità, quindi presto sarà possibile parlare del pieno supporto per questa tecnologia, sebbene non sia qualcosa di un insieme unico, piuttosto, è un insieme di nuove caratteristiche, ognuna delle quali è indipendente.

Bene, bene, qual è la differenza tra la creazione della navigazione principale (menu), dal momento che stai leggendo un articolo su questo argomento, allora dovrebbero esserci sicuramente alcune differenze. Bene, come è stato creato il menu prima? Di solito usavano un elenco puntato, che veniva inserito in un contenitore aggiuntivo per tutta la navigazione: un normale div.

Quindi, con l'avvento di nuovi tag, ora puoi fare più correttamente - invece di un tag div, avvolgi il menu in nav - un nuovo elemento semantico creato appositamente per raccogliere i collegamenti più importanti al suo interno, raggrupparli insieme.

In nav, puoi inserire sia un elenco che solo una serie di collegamenti. Mi sembra che questa sia una soluzione ancora più semplice e corretta, sebbene in molti modelli sia ancora possibile vedere l'implementazione del menu utilizzando i tag ul, li, a.

È interessante notare che il contenitore di navigazione è progettato specificamente per i collegamenti prioritari nella pagina. In effetti, potrebbero esserci più di uno di questi contendenti su una pagina, ma dovresti inserire in essi solo quei collegamenti che formano realmente la navigazione principale (ad esempio, il menu principale in alto e il suo duplicato nel piè di pagina).

Come creare un menu orizzontale con html5

Non hai nemmeno bisogno di alcuna cornice nell'elenco, tutto verrà inizialmente visualizzato su una riga, poiché i collegamenti sono elementi in linea.

Un'altra cosa è che sono molto limitati nel design a causa delle loro proprietà in linea. Puoi operare solo con proprietà come: colore, dimensione del carattere, margini. Se desideri impostare un colore di sfondo specifico, creare separatori e aggiungere rientri interni (o determinare la dimensione di ciascuna voce di menu), non sarai in grado di farlo con una linea.

Qui dobbiamo convertire i nostri elementi in elementi di blocco. Per fare ciò, devono scrivere una proprietà:

blocco di visualizzazione;

Ora vanno dall'alto verso il basso, cioè la nostra navigazione è diventata verticale. Per renderlo nuovamente orizzontale, è necessario aggiungere determinate proprietà. Ad esempio, invece di un tipo di blocco, definisci un tipo di blocco in linea per loro o impostali su (mobile: sinistra). Maggiori informazioni su questi metodi.

Navigazione verticale

Di solito, per creare un menu verticale in html5, usano un elenco, ma il markup che ti ho fornito sopra va bene per noi. Come hai visto, se converti i link in link di blocco, questi si allineeranno automaticamente uno dopo l'altro dall'alto verso il basso, perché due blocchi non possono stare sulla stessa linea.

Ora puoi applicare loro le regole di progettazione necessarie. Ci sono molte più proprietà sui blocchi che sull'elemento in linea, quindi hai molte più opzioni. Ad esempio, ho aggiunto quanto segue:

a (decorazione del testo: nessuna; colore: #fff; padding: 5 px; dimensione del carattere: 22 px; display: blocco; sfondo: gradiente lineare (a destra, rgba (96,108,136,1) 0%, rgba (63,76,107) , 1) 100%); larghezza: 200 px; allineamento testo: centro)

testo - decorazione: nessuna;

colore: #fff;

imbottitura: 5px;

carattere - dimensione: 22px;

blocco di visualizzazione;

sfondo: lineare - gradiente (a destra, rgba (96, 108, 136, 1) 0%, rgba (63, 76, 107, 1) 100%);

larghezza: 200 px;

testo - allinea: centro

In questo tutorial creeremo menu CSS orizzontale... Naturalmente, puoi utilizzare soluzioni già pronte, ad esempio assumere programmatori per CMS Made Simple. Tuttavia, non stai cercando modi semplici, vero? : bullo:

Passaggio 1 - Markup HTML

Innanzitutto, dobbiamo creare elementi dell'elenco con un tag per ogni elemento nel nostro menu orizzontale. Per creare un sottomenu, è necessario aggiungere un altro elenco figlio all'interno del genitore.

Passaggio 2 - Creazione di stili CSS per il menu orizzontale

Inizialmente, il menu sembra verticale, per risolvere questo problema scriveremo alcuni stili, modificheremo i rientri, i bordi, il colore di sfondo, arrotondare gli angoli. Faremo la larghezza e l'altezza fisse. Facciamo l'allineamento delle voci di menu a sinistra usando float: left (in modo che la navigazione abbia una struttura orizzontale).

Menu, .menu ul, .menu li, .menu a (margine: 0; padding: 0; bordo: nessuno; contorno: nessuno;) .menu (altezza: 40px; larghezza: 505px; sfondo: # 4c4e5a; sfondo: - webkit-linear-gradient (top, # 5c5e6a 0%, # 3c3d44 100%); background: -moz-linear-gradient (top, # 5c5e6a 0%, # 3c3d44 100%); background: -o-linear-gradient ( top, # 5c5e6a 0%, # 3c3d44 100%); background: -ms-linear-gradient (top, # 5c5e6a 0%, # 3c3d44 100%); background: linear-gradient (top, # 5c5e6a 0%, # 3c3d44 100%); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px;) .menu li (posizione: relativa; stile elenco: nessuno; float: sinistra; display: blocco ; altezza: 40px ;)

Scriviamo per un po' il seguente stile, nascondendo l'elenco a discesa. Questo renderà più facile la modifica.

Passaggio 3 - Stile del menu Link

Successivamente, scriveremo stili che aggiungono alcune proprietà CSS di base come tipo di carattere, colori, riempimento, ecc. Quindi aggiungi un'ombra per il testo e le transizioni di colore per creare un effetto uniforme in cui il colore non cambia istantaneamente, ma a un certo intervallo. Per creare un separatore di collegamento, aggiungi un bordo a sinistra ea destra, quindi rimuovi il bordo sinistro nel primo collegamento e il bordo destro nell'ultimo collegamento. Quando passi con il mouse sul menu, cambierà solo il colore.

Menu li a (display: block; padding: 0 14px; margin: 6px 0; line-height: 28px; text-decoration: nessuno; border-left: 1px solid # 494942; border-right: 1px solid # 4f5058; font- famiglia: Helvetica, Arial, sans-serif; font-weight: bold; font-size: 13px; color: # f4f4f4; text-shadow: 1px 1px 1px rgba (0,0,0, .6); -webkit-transition : color .3s facilita l'entrata; -moz-transition: color .3s facilita l'entrata; -o-transition: color .3s facilita l'entrata; -ms-transition: color .3s facilita l'entrata- out;transition: color .3s easy-in-out;) .menu li: primo figlio a (bordo sinistro: nessuno;) .menu li: ultimo figlio a (bordo destro: nessuno;) .menu li: passa il mouse> a (colore: # 9fde63;)

Passaggio 4 - Menu a discesa

Prima di tutto, rimuoviamo questa riga di codice che abbiamo aggiunto nel secondo passaggio.

Menu ul (display: nessuno;)

Ora modificheremo lo stile per il sottomenu. Aggiungi il posizionamento di 40 pixel in alto e 0 pixel a sinistra della voce di menu e aggiungi angoli arrotondati in basso. Imposta la trasparenza su zero e al passaggio del mouse cambiala su 1 per creare un effetto di dissolvenza in entrata/uscita. Per l'effetto di scorrimento su/giù, è necessario impostare l'altezza dell'elenco su 0 px quando il menu a discesa è nascosto e 36 px quando si passa con il mouse sopra il menu a discesa.

Menu ul (posizione: assoluta; alto: 40px; sinistra: 0; opacità: 0; sfondo: # 2f3035; -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border- raggio: 0 0 4px 4px; -webkit-transition: opacità .3s facilità .1s; -moz-transition: opacità .3s facilità .1s; -o-transition: opacità .3s facilità .1s; -ms-transition: opacità. 3s easy .1s; transition: opacity .3s easy .1s;) .menu li: hover> ul (opacity: 1;) .menu ul li (height: 0; overflow: nascosto; padding: 0; -webkit-transition: altezza .3s facilità .1s; -moz-transition: altezza .3s facilità .1s; -o-transition: altezza .3s facilità .1s; -ms-transition: altezza .3s facilità .1s; transizione: altezza .3s facilità. 1s;) .menu li: hover> ul li (altezza: 36px; overflow: visibile; padding: 0;)

Imposta la larghezza del menu a discesa selezionabile su 100 px. Ho aggiunto un bordo dopo ogni collegamento per separarli. Rimuoviamo il bordo nell'ultimo collegamento.

Menu ul li a (larghezza: 100px; padding: 4px 0 4px 40px; margin: 0; border: nessuno; border-bottom: 1px solid # 464649;) .menu ul li: last-child a (border: nessuno;)

Per completare il menu CSS orizzontale dobbiamo aggiungere un'icona per ogni sottomenu a discesa. Per fare ciò, creeremo una classe personalizzata per ciascuno dei sottomenu e aggiungeremo un'immagine di sfondo.

Menu ad (sfondo: url (docs.png) no-repeat 6px center;) .menu am (sfondo: url (bubble.png) no-repeat 6px center;) .menu as (sfondo: url (arrow.png) no -ripeti 6px al centro;)

Conclusione

Abbiamo creato con successo un menu a discesa orizzontale con e senza stili CSS3, sebbene fosse anche possibile. Se avete domande, fatemelo sapere nei commenti.

(Download: 395)

Specifiche

Descrizione

Etichetta

ha lo scopo di visualizzare un elenco di voci di menu. Simile ai tag
    e
      dentro il contenitore l'elenco è formato utilizzando i tag
    • .

      In HTML4, il tag

      obsoleto, si consiglia di utilizzare invece il tag
        ... In HTML5, il tag riabilitato, ma con una capacità diversa. Ora funge da contenitore per il tag e la creazione di un menu.

        Sintassi

        HTML
      • elemento del menu
      • elemento del menu
      • HTML5 ...

        attributi

        Imposta l'etichetta visibile per il menu. Specifica il tipo di menu.

        Tag di fine

        Necessario.

        Convalida

        L'uso di questo tag è deprecato dalla specifica HTML4, il codice valido si ottiene solo utilizzando un transitorio... In HTML5, applicare un tag

        correttamente.

        HTML 4.01 IE Cr Op Sa Fx

        Tag MENU

        In questo problema:

      • cucina russa. Burlatskaya orecchio
      • Cibo ucraino. Vareniki
      • Cucina moldava. paprikash
      • cucina caucasica. zuppa kharcho
      • Cucina baltica. volteggiare
      • Il risultato di questo esempio è mostrato in Fig. uno.

        Riso. 1. Visualizzazione della lista creata con il tag

        HTML5 IE Cr Op Sa Fx

        Tag MENU

      • Centrare un menu orizzontale può essere un compito complicato, specialmente per chi non conosce i CSS. Trovare soluzioni porta a un elenco molto limitato di metodi, la maggior parte dei quali si basa su CSS, trucchi JavaScript o sull'uso di regole non standard che non sono supportate da tutti i browser. In questo tutorial, ti guideremo attraverso il metodo per centrare un menu orizzontale, che utilizza solo regole CSS standard e funziona in tutti i browser.

        Un esempio di menu centrato

        Di seguito è riportato un menu orizzontale centrato in questa colonna, in cui è attivata la seconda scheda. Puoi provare a ridimensionare la finestra o la pagina del browser per assicurarti che il menu rimanga sempre centrato e reattivo.

        Nella pagina demo, puoi vedere diverse opzioni di design per un menu centrato orizzontalmente. Ognuno di loro può essere utilizzato nei tuoi progetti.

        markup HTML

        Tutti i menu mostrati in questa lezione utilizzano una struttura semplice. Questo è un normale elenco non ordinato di collegamenti inseriti in un elemento div.

        • Primo segnalibro
        • Secondo segnalibro
        • Terzo segnalibro
        • Quarto segnalibro

        Menu centrato Codice CSS

        Di seguito è riportato il CSS completo che centrerà il menu. E le spiegazioni del principio di lavoro sono fornite più avanti nella lezione.

        #centeredmenu (float: sinistra; larghezza: 100%; sfondo: #fff; border-bottom: 4px solido # 000; overflow: nascosto; posizione: relativa;) #centeredmenu ul (clear: sinistra; float: sinistra; stile elenco : nessuno; margin: 0; padding: 0; position: relative; left: 50%; text-align: center;) #centeredmenu ul li (display: block; float: left; list-style: nessuno; margin: 0; padding: 0; position: relative; right: 50%;) #centeredmenu ul li a (display: block; margin: 0 0 0 1px; padding: 3px 10px; background: #ddd; color: # 000; text-decoration: none; line-height: 1.3em;) #centeredmenu ul li a: hover (background: # 369; color: #fff;) #centeredmenu ul li a.active, #centeredmenu ul li a.active: hover (color: # fff; background: # 000; font-weight: grassetto;)

        Come funziona il metodo di centratura

        Il metodo si basa sul posizionamento relativo di elementi di blocco flottante l'uno nell'altro. Innanzitutto, vediamo come vengono ridimensionati gli elementi quando vengono spostati.

        Elemento div(blocco), senza offset, si estende per tutta la larghezza a sua disposizione.

        Ma se spostiamo l'elemento div a sinistra, si ridurrà automaticamente per adattarsi al suo contenuto. La compressione è la chiave per implementare questo metodo per centrare i menu. Aiuta a spostare il menu nella posizione corretta.

        Menu standard allineato a sinistra

        Prendiamo un menu standard allineato a sinistra e riprogettarlo passo dopo passo. Per chiarezza, gli articoli sono colorati in diversi colori, quindi è subito chiaro cosa si investe dove.

        Prestare attenzione ai seguenti punti:

        • Elemento menu centrato div(rettangolo blu) è spostato a sinistra, ma è largo al 100%, quindi rimane allungato per riempire l'intera pagina.
        • Elemento ul(rettangolo rosa) è all'interno dell'elemento menucentrato div e si sposta a sinistra. Ciò significa che verrà ridotto alla larghezza del suo contenuto, ovvero alla larghezza totale di tutti i segnalibri.
        • Tutti gli elementi li (rettangoli verdi) sono all'interno dell'elemento ul e spostati a sinistra. Pertanto, si riducono alla dimensione dei collegamenti in essi contenuti e si allineano in una linea orizzontale.
        • All'interno di ogni collegamento (rettangoli arancioni) viene visualizzato il testo del segnalibro: Segnalibro 1, Segnalibro 2 e così via.

        Spostamento della posizione dell'elenco non ordinato


        Quindi sfalsiamo l'elemento ul a destra del 50% utilizzando la posizione: relativa; ... Quando un elemento è compensato di una percentuale in queste condizioni, è importante ricordare che la larghezza totale degli elementi che contiene non è la sua larghezza. Nel nostro caso, l'offset avviene per metà della finestra del browser (o dello spazio disponibile per la visualizzazione), di conseguenza il nostro menu inizia al centro della finestra e si estende parzialmente al di fuori di essa. E vai al passaggio successivo.

        Spostare la posizione di tutte le voci di menu


        Resta solo da spostare tutti gli elementi li lasciato del 50%. Questo è il 50% della larghezza del nostro elemento ul (il contenitore che contiene il menu). Pertanto, le schede vengono spostate esattamente al centro della finestra.

        Alcune note importanti

        Ci sono diversi punti importanti da tenere a mente quando si utilizza questo metodo di centraggio:

        • Poiché l'elemento ul si estende parzialmente all'esterno della finestra, questo porta alla visualizzazione delle barre di scorrimento. Pertanto, è necessario utilizzare l'overflow: regola nascosta; per elemento menu centrato div... Quindi, la parte sporgente dell'elemento div sarà tagliato.
        • Poiché l'elemento ul non è allineato ai segnalibri, non è possibile utilizzare alcuno stile di visualizzazione per esso. Lascia l'elemento ul senza colore di sfondo e senza bordo in modo che sia completamente invisibile. E gli stili per i segnalibri dovrebbero essere usati solo per gli elementi. li.
        • Se devi impostare stili speciali per il primo e l'ultimo segnalibro, devi aggiungere una classe per il primo e l'ultimo elemento. li in modo da poterli modellare individualmente.

        Conclusione

        La soluzione proposta è compatibile con tutti i browser, non utilizza JavaScript e supporta il testo ridimensionabile.

        Dall'autore: Do il benvenuto a tutti. Per qualche ragione, i webmaster associano un menu a tendina agli script, ma per molto tempo tale navigazione può essere eseguita in assoluta sicurezza utilizzando i css puri. Inoltre, un tale menu non sarà peggiore. Oggi vi mostrerò come creare un menu a tendina in css. Condividerò, per così dire, una ricetta.

        Programma della lezione e layout del nostro menu

        In generale, prima decidiamo come creeremo il menu stesso. In HTML5, il modo standard è crearlo in un contenitore di navigazione utilizzando un elenco puntato. Facciamo proprio questo. Rimuoveremo i marcatori in seguito usando css, non ne abbiamo affatto bisogno nel menu.

        In realtà, scriverò immediatamente markup con elenchi annidati in html. Cioè, il nostro elenco sarà a due livelli: conterrà altri elenchi. Vale a dire, per ogni elenco di elementi 1, che formerà un menu a discesa.

        C'è un punto importante qui, ovvero che potrebbe non essere necessario rendere ogni elemento a discesa, ma solo alcuni. Nessun problema, quindi semplicemente non creiamo elenchi nidificati nei paragrafi senza abbandonarli.

        In realtà, eccolo qui, tutto il markup:

        < nav id = "nav" >

        < ul >

        < li > < a href = "#" >Paragrafo 1< / a >

        < ul class = "second" >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >Punto 2< / a >

        < ul class = "second" >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >Punto 3< / a >

        < ul class = "second" >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < / ul >

        < / li >

        < li > < a href = "#" >Articolo 4< / a >

        < ul class = "second" >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < li > < a href = "#" >Sottoparagrafo< / a > < / li >

        < / ul >

        < / li >

        < / ul >

        < / nav >

        Capisco che è enorme. Questo è il problema con gli elenchi annidati, che richiedono molto codice. Ma tieni presente che stiamo facendo 4 voci principali e per ognuna ci sarà un menu a tendina.

        In realtà, ho impostato l'identificatore di navigazione per tutta la navigazione e la seconda classe di stile per tutti gli elenchi annidati, per capire che sono annidati.

        Ottimo, il nostro markup è pronto, puoi guardare il risultato:

        Sì, sembra terribile. Adesso però attiveremo i css e in pochi minuti la nostra navigazione si trasformerà. Andiamo a lavorare.

        Scrivere stili css

        La prima cosa che farò è ripristinare tutti i padding sui valori predefiniti per tutti gli elementi. Interferiranno solo con noi, è meglio impostare noi stessi i trattini, dove è necessario.

        * (margine: 0; riempimento: 0;)

        margine: 0;

        imbottitura: 0;

        #nav (altezza: 70px;) #nav ul (stile elenco: nessuno;)

        #nav (

        altezza: 70px;

        #nav ul (

        lista - stile: nessuno;

        Ora dobbiamo effettivamente decidere quale sarà il nostro menu. Orizzontale o verticale? Propongo di fare prima l'orizzontale e vedere tutto sul suo esempio. Per fare ciò, è necessario scrivere i seguenti stili:

        #nav> ul> li (float: sinistra; larghezza: 180 px; posizione: relativa;)

        #nav> ul> li (

        galleggiante: sinistro;

        larghezza: 180 px;

        posizione: relativa;

        Nota che con il segno> ci riferiamo agli elementi in un elenco che è direttamente annidato in un ul e che uno è direttamente annidato in un nav. Questo è molto importante, in quanto consente di non applicare lo stile agli elementi negli elenchi nidificati. Il fatto è che, secondo la mia idea, gli elementi nell'elenco principale saranno disposti orizzontalmente e in quelli nidificati - verticalmente.

        Ma, ovviamente, puoi farlo in modo diverso, secondo la tua idea. Puoi fare tutti gli articoli su una riga.

        Comunque, il codice di cui sopra, spero che tu possa capire. Forza gli elementi nell'elenco principale a scorrere a sinistra, in modo che si adattino tutti alla stessa riga, anche se sono elementi di blocco. Ho anche dato loro una larghezza esplicita e un posizionamento relativo.

        A cosa serve il posizionamento? E' necessario per poi posizionare in modo assoluto le liste annidate. Se hai studiato il posizionamento in css, allora probabilmente saprai che se imposti un posizionamento relativo di un blocco, tutti gli elementi in esso contenuti possono essere posizionati assolutamente all'interno di questo particolare blocco e non dell'intera finestra del browser.

        Nel frattempo, ecco cosa abbiamo già:

        Da questo screenshot, puoi già immaginare il risultato approssimativo. Naturalmente, dobbiamo ancora decorare bene i paragrafi in modo che gli occhi non chiedano pietà durante la visualizzazione della navigazione.

        #nav li a (display: block; background: # 90DA93; border: 1px solid # 060A13; color: # 060A13; padding: 8px; text-align: center; text-decoration: nessuno;) #nav li a: hover ( sfondo: # 2F718E;)

        #nav li a (

        blocco di visualizzazione;

        sfondo: # 90DA93;

        bordo: 1px solido # 060A13;

        colore: # 060A13;

        imbottitura: 8px;

        testo - allinea: centro;

        testo - decorazione: nessuna;

        #nav li a: hover (

        sfondo: # 2F718E;

        Innanzitutto, i collegamenti stessi devono essere resi a blocchi. Ciò è necessario affinché il riempimento funzioni e tutte le proprietà vengano applicate correttamente. Successivamente, specifico i colori dello sfondo, il testo, i parametri della cornice, il riempimento e l'allineamento del testo al centro. Infine, rimuovi la sottolineatura dai link.

        Tutti questi parametri non devono essere scritti come ho fatto io. Puoi scegliere i colori arbitrariamente, rendere una cornice diversa o non usarla affatto, i rientri possono essere diminuiti o aumentati.

        Nota che in questo caso non abbiamo usato il segno>, quindi queste regole si applicheranno a tutti i link, inclusi quelli nei paragrafi nidificati. Quindi, ora abbiamo quanto segue:

        Ottimo, ma capisci che gli elementi secondari non dovrebbero essere visibili, dovrebbero aprirsi quando passi con il mouse sull'elemento desiderato. Senza di essa, il nostro menu sembra un tavolo. Bene, è ora di nascondere gli elementi nidificati.

        #nav li .second (display: nessuno; posizione: assoluta; top: 100%;)

        #nav li .secondo (

        display: nessuno;

        posizione: assoluta;

        i primi 100%;

        Innanzitutto, nascondiamo gli elenchi completamente nidificati. In secondo luogo, diamo loro il posizionamento assoluto e la coordinata superiore: 100%. Ciò significa che il menu a tendina verrà visualizzato chiaramente sotto l'elemento principale a cui appartiene, chiaramente al di sotto del 100% dell'altezza di quell'elemento.

        Ora vediamo solo il menu principale della pagina web, che è ciò di cui abbiamo bisogno.

        Implementare il drop out

        Dobbiamo fare la cosa più importante: realizzare la perdita stessa. Non c'è niente di complicato, guarda questo codice:

        #nav li: hover .second (display: block;)

        #nav li: hover .second (

        blocco di visualizzazione;

        Questo codice funzionerà perfettamente. Quando passi con il mouse su un elemento nel menu principale, l'elenco nidificato diventa visibile. E solo l'elenco incorporato nell'elemento su cui passa il cursore.

        C'è solo un piccolo problema: la larghezza degli elementi nidificati non corrisponde alla larghezza di quelli principali. Ma questo si risolve molto facilmente aggiungendo gli stili appropriati:

        #nav li li (larghezza: 180 px;)

        #nav li li (

        larghezza: 180 px;

        Tutto, il problema è risolto:

        Tutto funziona perfettamente. Quando passi con il mouse sull'elemento principale, viene visualizzato il menu a discesa corrispondente. Se sposti il ​​cursore di lato, scompare. Se sposti il ​​cursore sugli elementi nidificati stessi, puoi fare clic su di essi e andare alla sezione desiderata del sito. Pertanto, abbiamo creato con te un menu a discesa molto semplice e leggero senza assolutamente script.

        Conversione del menu in verticale

        Bene, bene, abbiamo risolto completamente con la navigazione orizzontale, ma oltre a ciò, la navigazione verticale è molto comune sui siti e può anche essere a discesa. In effetti, è molto facile cambiare il menu da orizzontale a verticale, basta cambiare un paio di righe di codice.

        Per prima cosa, dovrai rimuovere il float: a sinistra dagli elementi dell'elenco principale. È questa proprietà che contribuisce al fatto che i nostri articoli vengono visualizzati su un'unica riga, ma perché ne abbiamo bisogno se la navigazione deve essere verticale?

        Ora resta da cambiare le regole per il selettore #nav li .second, ovvero per gli elenchi annidati, ovvero devono essere posizionati in modo leggermente diverso. Come questo:

        #nav li .second (display: nessuno; posizione: assoluta; sinistra: 100%; alto: 0;)

        #nav li .secondo (

        display: nessuno;

        posizione: assoluta;

        sinistra: 100%;

        in alto: 0;

        Cioè, è necessario registrare due coordinate invece di una. In primo luogo, nel caso della navigazione orizzontale, ho detto che, come previsto, le voci dei menu annidati dovrebbero essere visualizzate sotto le voci principali. Nel caso di un menu verticale, questo non è adatto: gli elementi dovrebbero essere visualizzati sul lato.

        Quindi cambia in alto: 100% a sinistra: 100%. Inoltre, abbiamo anche bisogno della coordinata superiore. Lo impostiamo a 0 in modo che il sottomenu sia allo stesso livello della voce a cui corrisponde.

        Tutto, ora tutto funziona come dovrebbe. Puoi testarlo. Come puoi vedere, non stavo mentendo quando ho detto che avrei dovuto riscrivere solo poche righe di codice.

        Menu orizzontale con più livelli

        Usando più o meno lo stesso approccio, puoi creare più livelli di menu se necessario. Ad esempio, creiamo una lista per la quarta voce del menu principale, che sarà annidata in una delle sottovoci.

Principali articoli correlati