Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Allineare elementi flessibili con i margini automatici

Sfruttare la gestione dei margini automatici di flexbox, tra le più importanti features della specifica.
Sfruttare la gestione dei margini automatici di flexbox, tra le più importanti features della specifica.
Link copiato negli appunti

Una delle caratteristiche più utili e potenti del flexbox è il modo in cui in tale contesto vengono gestiti i margini automatici. Per intenderci, quelli assegnati con il valore auto, come in margin-top: auto.

Assegnando un margine automatico ad un elemento inserito in un contenitore flessibile, viene assorbito tutto lo spazio disponibile e l'elemento viene allineato sul lato opposto rispetto a quello designato con la proprietà margin. Molto più facile far parlare un esempio.

Nella demo 5 abbiamo inserito nella nav un campo per la ricerca sul sito. è stato collocato sul lato opposto rispetto al menu, secondo un pattern di design molto comune. Inizialmente abbiamo così definito a livello HTML il nostro modulo:

<nav class="main-nav">
 <ul class="main-menu">
  <li class="menu-item"><a class="menu-link" href="#">home</a></li>
  <li class="menu-item"><a class="menu-link" href="#">italia</a></li>
  <li class="menu-item"><a class="menu-link" href="#">mondo</a></li>
  <li class="menu-item"><a class="menu-link" href="#">politica</a></li>
  <li class="menu-item"><a class="menu-link" href="#">economia</a></li>
  <li class="menu-item"><a class="menu-link" href="#">tecnologia</a></li>
  <li class="menu-item"><a class="menu-link" href="#">cultura</a></li>
 </ul>
 <form class="modulo-ricerca">
  <input type="text" placeholder="Cerca" class="campo-ricerca">
 </form>
</nav>

Nel contesto del nostro layout va a collocarsi a questo punto così:

Figura 4 - Modulo di ricerca senza flexbox
screenshot

Nulla di strano: il form è un elemento blocco e come tale si colloca automaticamente su una nuova riga.

Per allinearlo accanto al menu dovremo agire sull'elemento che contiene entrambi, ovvero l'elemento nav.main-nav. Basta dichiarare una sola regola:

.main-nav {
 display: flex;
 display: -webkit-flex;
}

E dato che di default gli elementi flessibili si collocano su una riga otteniamo questo risultato:

Figura 5 - Modulo di ricerca con flexbox
screenshot

Manca ancora un passo: allineare il modulo a destra. Facile. Come si accennava, basta usare la proprietà di margine opposta al lato su cui vogliamo allineare e dare il valore auto. Volendo allineare a destra useremo:

.modulo-ricerca {
 margin-left: auto;
}

Fatto. Il modulo sarà sempre ancorato alla parte destra del suo contenitore. Vedremo più avanti come questa funzionalità legata a margin: auto possa essere di grande efficacia in altri contesti.

Figura 6 - Modulo di ricerca con flexbox allineato a destra
screenshot

Ti consigliamo anche