logo Dove iniziare Linguaggi Aiuto Blog
Home Dove iniziare Linguaggi Aiuto e Supporto Info e Blog

Allineare gli elementi in CSS

L'allineamento degli elementi è una parte fondamentale del design web e permette di controllare come i vari componenti di una pagina si dispongono in relazione l'uno con l'altro. In questa lezione, esploreremo diverse tecniche di allineamento in CSS, analizzando le proprietà e i metodi più comuni.

Questo elemento è al centro

Prima di iniziare con la spiegazione vera e propria, vogliamo darvi qualche informazione curiosa. Alla domanda Come posso allineare questo elemento al centro? potresti pensare che ci sia una risposta semplice. In realtà no. Negli anni sono nate migliaia di pagine che parlavano di come, ad esempio, allineare un <div>. Sembra una cosa scontata, ma in realtà non lo è affatto. Sono nate diverse meme proprio su questo:

Foto: @iamnotanartist_ da www.instagram.com

Foto: @iamnotanartist_ da www.instagram.com

Ora andiamo a vedere come allineare gli elementi in CSS.

Allineare i testi e gli elementi inline

Vediamo come allineare orizzontalmente e verticalmente i testi e gli elementi inline.

Allineamento orizzontale

Per allineare i testi e gli elementi inline (ovvero link, immagini, ecc. di cui abbiamo parlato nella lezione HTML sugli elementi block e inline) orizzontalmente, possiamo utilizzare la proprietà text-align:center, che abbiamo visto nella lezione su come allineare i testi.

<div>Questo testo è al centro</div>
<div> <a href="#1">Link1</a> <a href="#2">Link2</a> </div>

<style>
div {
  text-align: center;
}
</style>

Allineamento verticale

Il modo più semplice per allineare verticalmente un testo o altri elementi inline è l'utilizzo del padding, che abbiamo visto nella lezione sul padding, sia in alto che in basso.

<div>Questo testo è al centro</div>
<div> <a href="#1">Link1</a> <a href="#2">Link2</a> </div>

<style>
div {
  padding: 20px 0;
  border: 1px solid grey;
}
</style>

Un altro metodo che puoi utilizzare per l'allineamento verticale è line-height, proprietà per lo spazio del testo in CSS che specifica lo spazio tra le righe. Aggiungendo white-space:nowrap evitiamo che il testo vada a capo.

<div>Questo testo è al centro</div>
<div> <a href="#1">Link1</a> <a href="#2">Link2</a> </div>

<style>
div {
  line-height: 100px;
  white-space: nowrap;
  border: 1px solid grey;
}
</style>

Allineare gli elementi block (come <div>)

Allineare gli elementi block (come i <div>) può essere più complicato di quelli inline. Vediamo come farlo.

Allineamento orizzontale

È possibile centrare un elemento block orizzontalmente specificando sia il margine destro che sinistro come auto. È necessario specificare un valore di width, in quanto gli elementi block generalmente occupano l'intera larghezza della pagina.

<div>Questo elemento è al centro</div>

<style>
div {
  margin: 0 auto;
  width: 50%;
  border: 1px solid grey;
}
</style>

Questo metodo è utilizzato spesso anche per le immagini. Basta impostare un display uguale a block.

<img src="foto.png" alt="Immagine centrata orizzontalmente">

<style>
img {
  display: block;
  margin: 0 auto;
  width: 50%;
}
</style>

Puoi allineare gli elementi, a destra o a sinistra, usando la proprietà float, che abbiamo visto nella lezione dedicata. Ricorda che con float non è possibile allineare al centro l'elemento.

<div>Questo elemento è a sinistra</div>

<style>
div {
  float: right;
  width: 50%;
  border: 1px solid grey;
}
</style>

Allineamento verticale (e orizzontale)

Per allineare verticalmente un elemento, ad esempio un <div>, il modo più veloce è utilizzare Flexbox, un metodo che vedremo nella lezione sul Flexbox. In questo modo, è possibile allineare sia orizzontalmente che verticalmente un elemento.

Questo elemento è al centro con flexbox

<div class="flexbox">
  <div>Questo elemento è al centro</div>
</div>

<style>
.flexbox {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 300px;
  border: 1px solid grey;
}
.flexbox > div {
  background-color: LightSkyBlue;
  width: 100px;
  height: 100px;
}
</style>

Nell'esempio, abbiamo utilizzato un selettore combinato (.flexbox > div). Se non lo conosci, non preoccuparti: lo vedremo nella lezione dei selettori combinati. Per ora, basta sapere che .flexbox > div indica il <div> all'interno del <div> più esterno.

Per allineare verticalmente un elemento, è anche possibile utilizzare position, che abbiamo visto nella lezione sula posizione degli elementi. È necessario anche usare transform (che vedremo nella lezione sulle trasformazioni 2D e 3D), per posizionare l'elemento correttamente:

<div class="relative">
  <div>Questo elemento è al centro</div>
</div>

<style>
.relative {
  position: relative;
  height: 200px;
  border: 1px solid grey;
}
.relative > div {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background-color: red;
  color: white;
}
</style>

Se vuoi, invece, allineare anche orizzontalmente un elemento con position, puoi fare in questo modo:

<div class="relative">
  <div>Questo elemento è al centro</div>
</div>

<style>
.relative {
  position: relative;
  height: 200px;
  border: 1px solid grey;
}
.relative > div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: red;
  color: white;
}
</style>

Prova!Completa gli spazi vuoti con il testo appropriato.
/* Allinea al centro il <div> attraverso il margine */
div {
  width: 300px;
  : 0 ;
}

Prova!Scegli l'opzione corretta tra quelle elencate.
/* Allinea l'immagine al centro */
img {
  display: block;
  ________________;
}