Oggi parleremo di float e clear nei CSS e faremo degli esempi su come utilizzare assieme queste due proprietà.
Esempi d’uso float e clear
Facciamo un esempio in riferimento all’esempio con i float affrontato nella lezione precedente: float css.
Modifichiamo il codice html inserendo del testo, mentre nel codice CSS togliamo la larghezza e l’altezza del container.
Di seguito ecco la pagina html che contiene un contenitore con dentro uno span con del semplice testo e poi 3 box a cui assegniamo le proprietà float left e float right.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Esempio con i float</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<span>ciao da coding creativo</span>
<div class="box red float-right">1 float-right</div>
<div class="box blue float-right">2 float-right</div>
<div class="box yellow float-left">3 float-left</div>
</div>
</body>
</html>
Dopo, nel foglio di stile, al container non diamo nessuna dimensione in larghezza o altezza, ma assegniamo semplicemente un colore.
Scriviamo poi le due proprietà per i float e creiamo le proprietà per i box contenitori.
Uno svantaggio nell’utilizzare la seguente proprietà è dato dal fatto che si può utilizzare qualora si ha controllo del margin e del padding altrimenti si rischierebbe di visualizzare le barre di scorrimento.
Uso di float e clear
La proprietà clear consente di impostare dei valori left, right, both, initial ed inherit.
Quindi possiamo cancellare il float su un lato oppure su entrambi i lati.
Proviamo dunque ad inserire un div direttamente nel codice html dopo tutti i contenuti.
<div class="container">
<span>ciao da coding creativo</span>
<div class="box red float-right">1 float-right</div>
<div class="box blue float-right">2 float-right</div>
<div class="box yellow float-left">3 float-left</div>
<div class="clearfix"></div>
</div>
E nel css aggiungiamo la seguente classe:
.clearfix {
clear: both;
}
In questo modo l’elemento non può avere elementi flottanti affiancati né a destra né a sinistra.
Clear e pseudo-elementi
Una buona abitudine, utilizzata per la maggior parte dei lavori web, è quella di non creare un div direttamente nella pagina html, ma utilizzare gli pseudo-elementi.
Nel nostro caso ci sarà utile lo pseudo-elemento ::after, al fine di creare, dopo il contenuto dell’elemento, una regola che abbia la proprietà clear, come nell’esempio precedente.
Dunque nella pagina html scriviamo semplicemente:
<div class="container">
<span>ciao da coding creativo</span>
<div class="box red float-right">1 float-right</div>
<div class="box blue float-right">2 float-right</div>
<div class="box yellow float-left">3 float-left</div>
</div>
Nei CSS la nostra regola potrebbe diventare:
.container::after {
clear: both;
}
Con after creiamo il contenuto, non dopo l’elemento container, ma dopo il contenuto di container.
Ma ciò non basta, dobbiamo dirgli di aggiungere del contenuto vuoto e di comportarsi ad esempio come una tabella.
perché i vecchi browser non supportavano il content vuoto.
In questa lezione abbiamo affrontato il problema del collasso dei margini di un contenitore che contiene degli elementi flottanti, quindi abbiamo utilizzando le proprietà float e clear.
In questa lezione creiamo un layout utilizzando i float in modo da comprenderne meglio il funzionamento.
Fino a qualche anno fa i layout con i float erano ampiamente utilizzati e tutt’ora se ne continua a fare uso in molte strutture.
In particolar modo impareremo ad allineare gli elementi utilizzando float left e right e ad utilizzare correttamente l’elemento clearfix, necessario per ripulire da eventuali elementi flottanti a destra e a sinistra.
Layout di esempio con float
Di seguito il layout di esempio che andremo a sviluppare.
Quindi partiamo dalla struttura html del layout da realizzare utilizzando i float.
Abbiamo un elemento header, dove andremo ad inserire due div.
Al primo div, dove inseriamo l’immagine del logo, assegniamo un float left in modo da posizionarlo sulla sinistra. Mentre al secondo div assegniamo un float right per posizionarlo sul lato destro e all’interno inseriamo un elenco con il nostro menù di navigazione.
Dopo nel main creiamo due sezioni.
Nella prima sezione che caratterizza la colonna sinistra inseriamo del semplice testo e assegniamo un float left per allinearla a sinistra.
Anche alla seconda sezione assegniamo un float left per metterla a fianco della prima. All’interno inseriamo dei contenitori per l’immagine ed il testo a cui assegniamo sempre un float left per posizionarle affiancate.
Nel footer infine inseriamo semplicemente le informazioni per il copyright.
Ecco di seguito il codice html di esempio per creare il layout utilizzando i float:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Esempio di layout con i float</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<div class="logo float-left">
<img src="img/logo" alt="logo">
</div>
<div class="menu float-right">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Coding nelle scuole</a></li>
<li><a href="">Giochi di coding</a></li>
</ul>
</div>
</header>
<main>
<div class="col-left float-left">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ea voluptatum magni minus ullam odio, excepturi accusantium. Autem eum recusandae vitae quisquam dolores, cupiditate, eaque molestiae dicta placeat cumque quaerat natus!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ea voluptatum magni minus ullam odio, excepturi accusantium. Autem eum recusandae vitae quisquam dolores, cupiditate, eaque molestiae dicta placeat cumque quaerat natus!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ea voluptatum magni minus ullam odio, excepturi accusantium. Autem eum recusandae vitae quisquam dolores, cupiditate, eaque molestiae dicta placeat cumque quaerat natus!</p>
</div>
<section class="main-section float-left"">
<!-- prima scheda -->
<div class="scheda">
<div class="immagine float-left">
<img src="img/primoprogramma-scratch.jpg" alt="scratch">
</div>
<div class="descrizione float-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias odio sint reprehenderit reiciendis aperiam aut debitis quam in distinctio officia, ratione dolores, maiores dignissimos, magnam soluta nihil, enim quo numquam.
</div>
</div>
<!-- /prima scheda -->
<!-- seconda scheda -->
<div class="scheda">
<div class="immagine float-left">
<img src="img/primoprogramma-scratch.jpg" alt="scratch">
</div>
<div class="descrizione float-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias odio sint reprehenderit reiciendis aperiam aut debitis quam in distinctio officia, ratione dolores, maiores dignissimos, magnam soluta nihil, enim quo numquam.
</div>
</div>
<!-- /seconda scheda -->
<!-- terza scheda -->
<div class="scheda">
<div class="immagine float-left">
<img src="https://www.codingcreativo.it/wp-content/uploads/2019/06/primoprogramma-scratch.jpg" alt="scratch">
</div>
<div class="descrizione float-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias odio sint reprehenderit reiciendis aperiam aut debitis quam in distinctio officia, ratione dolores, maiores dignissimos, magnam soluta nihil, enim quo numquam.
</div>
</div>
<!-- /terza scheda -->
<!-- quarta scheda -->
<div class="scheda">
<div class="immagine float-left">
<img src="img/primoprogramma-scratch.jpg" alt="scratch">
</div>
<div class="descrizione float-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Alias odio sint reprehenderit reiciendis aperiam aut debitis quam in distinctio officia, ratione dolores, maiores dignissimos, magnam soluta nihil, enim quo numquam.
</div>
</div>
<!-- /quarta scheda -->
</section>
</main>
<footer>
powered by Coding Creativo ♥
</footer>
</body>
</html>
Nel css creiamo al solito le regole generali per togliere il margin ed il padding da qualsiasi elemento.
Dopo inseriamo le regole generali per le varie sezioni header, main e footer.
Inseriamo le classi per il float left e il float right.
Poi inseriamo le classi che servono ad effettuare il clearfix utilizzando lo pseudo-elemento ::after. Le utilizziamo su tutti gli elementi che contengono elementi flottanti.
Ecco di seguito il codice CSS per la creazione del nostro layout utilizzando la proprietà float.
In questa lezione studieremo gli pseudo-elementi before e after dei CSS, utilizzati per aggiungere elementi che non sono presenti nel codice html.
In dettaglio before inserisce un contenuto prima dell’elemento individuato dal selettore selezionato, mentre after inserisce un contenuto dopo l’elemento.
Nel selettore individuato da ::before o ::after si specifica la proprietà content che serve ad inserire un contenuto prima o dopo l’elemento selezionato.
Primo esempio con before e after CSS
Creiamo un semplice esempio inserendo un cuore prima del testo e una stella dopo il testo, come nell’esempio sotto:
Nella pagina html inseriamo in un punto qualunque un div con del testo all’interno, come da codice sotto:
<div class="testo">Coding Creativo</div>
Poi nel css andiamo ad inserire le regole per il before e l’after. Ad entrambi assegniamo la proprietà content e per il cuore inseriamo il codice \2665, mentre per la stella inseriamo il codice 2605.
Impostiamo poi il colore rosso per il cuore e giallo per la stella. Impostiamo anche una dimensione del font e un padding opportuno.
Ecco di seguito il codice che utilizza sia before, sia after nei CSS:
Chiaramente before e after si possono utilizzare anche singolarmente.
Secondo esempio before e after CSS
In questo secondo esempio inseriamo una freccia prima di un paragrafo.
Quindi questa volta ci sarà bisogno di utilizzare solo lo pseudo-elemento before, pertanto tralasciamo l’after.
Nella pagina html inseriamo un paragrafo, come ad esempio questo:
<p class="paragrafo"> Coding Creativo - il blog per imparare a programmare</p>
Nel css inseriamo le regole di formattazione per il paragrafo e creiamo un contenuto dinamicamente prima della scritta.
Creiamo un elemento inline-block con delle dimensioni in larghezza ed altezza e centriamo il contenuto, nel nostro caso una freccia, utilizzando line-height e text-align center. Diamo poi uno sfondo, un colore del testo, un grassetto ed un bordo arrotondato.
Ecco dunque il codice css necessario per realizzare quanto detto:
In questa lezione abbiamo affrontato gli pseudo-elementi before e after dei CSS, per creare elementi dinamicamente prima o dopo altri elementi. Nelle prossime lezioni vedremo ancora altri esempi.
In questa lezione studieremo la proprietà float dei CSS.
Questa proprietà consente di rimuovere un elemento dal suo normale flusso e quindi di poterlo spostare a destra oppure a sinistra.
Se ad un elemento assegniamo la proprietà float, automaticamente diventa un block a cui poter assegnare larghezza, bordi, margini, ecc.
Proprietà float CSS
La proprietà float consente di impostare i seguenti valori: left, right, none, initial, inherit. Dove none è il valore di default.
Primo esempio con float left
Facciamo degli esempi per comprenderne il funzionamento. Supponiamo dunque di avere un elemento contenitore con degli elementi (div) uno accanto all’altro, come da figura sotto:
Uno dei modi per ottenere questo risultato è utilizzare quindi la proprietà float left dei CSS ed assegnarla a ciascun contenitore.
Abbiamo scelto, per il momento, di dare un’altezza ed una larghezza fissa al contenitore esterno. Se non facciamo questa operazione il contenitore grigio non sarebbe visibile perché non prendebbe in automatico l’altezza dei contenitori inseriti al suo interno. Nelle prossime lezioni vedremo come risolvere questo problema.
Secondo esempio con float right CSS
In questo secondo esempio ci prefissiamo di ottenere l’effetto come da figura, con gli elementi, a partire dal primo, allineati al margine destro.
Il codice html non cambia rispetto all’esempio precedente, mentre il codice CSS cambia solo per la classe float-right assegnata ai 3 contenitori.