Come puoi vedere, la prima immagine prende effettivamente la posizione più a destra. Allo stesso modo, quando la linea si rompe, la quarta immagine viene posizionata sul lato destro. Questo è il motivo per cui raramente vedi qualcuno che fa scorrere un elenco di elementi di navigazione a destra. Per fare ciò, si avvita l'ordine e si richiederebbero modifiche indesiderate nella gerarchia HTML da risolvere.
Clearing Floats
I float sono utili per realizzare grandi imprese di layout come creare colonne di contenuti. Tuttavia, una volta dichiarati, hanno un effetto sul resto del flusso del documento che potresti o non vorresti gradire! Per esempio, diciamo che volevamo inserire un paragrafo dopo un blocco di elementi di elenco fluttuanti a sinistra come quello che avevamo sopra.
Probabilmente il risultato non sarà quello che speravi:
La risposta qui è usare il chiaro proprietà, in modo che nessun oggetto fluttuante possa apparire su un determinato lato dell'elemento a cui è applicato. Ad esempio, diciamo che puntiamo alla seconda voce della lista nella nostra piccola galleria e applichiamo un valore di ? chiaro: sinistra?.
Ciò che questo codice fa è dire al browser che la parte superiore della seconda voce dell'elenco deve trovarsi sotto la parte inferiore di tutti gli oggetti a sinistra prima di essa (in questo caso, la prima voce dell'elenco). Se avessimo messo tutti questi elementi a destra, avremmo dovuto usarli ? chiaro: giusto? anziché.
Si noti che dopo questo, il resto degli oggetti flottanti mantengono il loro corso. Questo perché sono ancora impostati per andare a sinistra, la proprietà chiara non lo cancella in qualche modo. Ciò significa che il nostro problema con il paragrafo non è risolto eliminando uno degli elementi dell'elenco.
Invece, ciò che deve accadere è che l'elemento paragrafo, che è un elemento a livello di blocco che non è stato flottato, deve essere cancellato. Questo farà in modo che appaia sotto gli elementi flottati piuttosto che accanto a loro.
Abbiamo tecnicamente solo bisogno di una sinistra chiara qui, ma quando uno sviluppatore vuole essere sicuro di cancellare tutti i float, è prassi comune vedere tutti e due valore usato. Questo cambiamento ha risolto bene il nostro problema!
Float Quirks e Clear Fixes
C'è un'azione particolare che si verifica quando un dato elemento contiene solo elementi flottati: l'altezza dell'elemento genitore collassa. Per illustrare questo, diciamo che volevamo mettere un colore di sfondo sulla lista non ordinata che stiamo usando in tutti i nostri esempi. Se gli elementi nell'elenco non sono floatati, è sufficiente applicare il colore allo sfondo usando i CSS.
Come puoi vedere nell'esempio seguente, la casella che definisce l'elenco non ordinato è diventata grigia e gli elementi della lista all'interno sono impilati uno sopra l'altro.
Tuttavia, il secondo che spostiamo tali voci di elenco, che UL contiene solo elementi flottati, e quindi la sua altezza collassa, lasciando uno sviluppatore newbie chiedendo cosa diavolo è successo al suo colore di sfondo.
Esistono diversi modi per risolvere questo problema. La soluzione più semplice e diretta consiste semplicemente nell'applicare un'altezza esplicita all'elemento genitore, che è la lista non ordinata.
Come puoi vedere, questo ci ha davvero restituito il nostro background. Tuttavia, raramente questa è la strada da seguire semplicemente perché è più conveniente a lungo termine se l'altezza viene calcolata automaticamente in base al contenuto. Se aggiungiamo altre tre righe di immagini alla nostra lista ora, quell'altezza non sarà adeguata.
Clearfix To The Rescue
Questo è dove il termine? Correzione chiara ,? anche scritto? clearfix ,? entra in gioco. Clearfix risolve questo problema di altezza collassante tradizionalmente attraverso l'uso di chiaro proprietà.
Quello che gli sviluppatori erano soliti è creare un elemento vuoto (spesso un div) nel loro HTML allo stesso livello degli oggetti flottati, quindi applicare una classe di? Clearfix? a quel contenitore vuoto Tornando in CSS, si aggiungerebbe quindi i float alla clearfix? proprietà.
Questo risolve immediatamente il problema dell'altezza compressa:
Dato ciò che abbiamo già imparato, sappiamo esattamente perché questo trucco ha risolto il nostro problema. Il motivo per cui l'altezza era crollata è dovuto al fatto che il genitore conteneva solo bambini fluttuanti. Ora ha un figlio, anche se vuoto, che non è flottato, quindi l'altezza automatica funziona come previsto.
Il problema con questo metodo è che a nessuno è piaciuto quell'elemento extra brutto nell'HTML. Semplicemente non era semantico, il che significava che non stava aiutando a comunicare la chiara gerarchia della pagina.
La nuova correzione di fantasia per questo problema è di sfruttare il straripamento proprietà, che governa la funzionalità del contenuto che si estende oltre i limiti della sua casella di contenimento. Si scopre che se si imposta overflow su nascosto o auto sull'elemento padre, corregge il crollo dell'altezza!
Questa è sicuramente la soluzione più breve ed elegante per risolvere il problema dell'altezza collassante e dovrebbe essere il tuo approccio alla strategia. Detto questo, ci saranno casi in cui si desidera impostare l'overflow di un elemento visibilecosa dovresti fare allora?
La risposta è usare Micro Clearfix Hack di Nick Gallagher, che usa alcuni genius CSS per risolvere questo problema. Innanzitutto, utilizza: before e: after per aggiungere un contenuto che possiamo usare per creare qualcosa nel genitore che non è floatato. Tuttavia, non vuoi veramente alcun contenuto qui, quindi lo lasciamo vuoto ma impostiamo il display sulla tabella per creare una cella anonima (vuota e non occupa spazio) e infine usare il nostro vecchio amico chiaro. Questo crea l'elemento invisibile a livello di blocco di cui abbiamo bisogno per correggere il collasso di altezza senza markup HTML extra. Le versioni precedenti di IE richiedono la propria correzione, quindi anche questa viene generata.
Conclusione
In questo articolo, siamo andati oltre a tonnellata di grandi informazioni, sia di base che complicate. Abbiamo iniziato con una discussione su come sono i float e come funzionano su un livello base, quindi abbiamo proceduto a come impostare un elemento su float influenza le caselle confinanti degli elementi coinvolti in modo da poter capire correttamente come far funzionare i margini come tu li vuoi
Successivamente, ci siamo spostati sulle regole base che governano la posizione di un elemento flottato e siamo arrivati ad alcune interessanti conclusioni su come saranno posizionati elementi fluttuanti di altezze variabili e su come gli oggetti allineati correttamente appaiono in ordine inverso.
Infine, abbiamo chiaramente illustrato l'intera storia di come un genitore che contiene solo bambini fluttuanti avrà un'altezza compressa e come è possibile risolverlo in base al proprio scenario particolare.
Se i galleggianti fossero qualcosa che ti ha confuso prima di leggere questo articolo, unisciti al club. Ci confondono tutti all'inizio. Speriamo che tu abbia una conoscenza eccezionale di come funzionano i float e di come puoi usarli per ottenere qualsiasi layout tu voglia. Lascia un commento qui sotto e facci sapere se hai trovato utile questa informazione.