Articolo originale: HTML Div – What is a Div Tag and How to Style it with CSS

L'elemento HTML division, chiamato in breve "div", è un elemento speciale che ti permette di raggruppare su una pagina degli elementi simili per contenuto. Puoi usarlo come un generico contenitore per associare contenuti dello stesso tipo.

L'elemento <div> è uno dei più usati e non sembra voler scomparire, nonostante l'introduzione degli elementi semantici (molti di questi elementi possono essere usati come contenitori).

In questo tutorial, ti mostrerò varie cose che puoi fare con un div, come usarne diversi nello stesso file HTML senza confonderti, e come definirne lo stile.

Quando usare l'elemento div

L'elemento div è multiuso – puoi usarlo per fare varie cose in una pagina web. Lo userai per lo più per definire la disposizione e lo stile in CSS, ma è molto flessibile.

In definitiva, lo userai quasi sempre per dare stile a quel che contiene o manipolarne il contenuto con JavaScript.

1. div per il layout

L'uso primario che farai dell'elemento div sarà raggruppare contenuti simili per dare loro uno stile facilmente. Un buon esempio è usare un div per riunire diverse sezioni di una pagina. Puoi mettere insieme intestazione, barra di navigazione, sezioni e piè di pagina in uno stesso div per poter impostare per tutti lo stesso stile.

Più avanti in questo tutorial, ti accompagnerò nella costruzione di un layout con diversi div senza fare confusione.

L'elemento div da solo non ha un effetto diretto sulla presentazione del contenuto se non si definisce uno stile.

2. div per CSS

Con l'elemento div puoi fare diverse forme e disegnare qualsiasi cosa, perché è facile definirne lo stile.

  • Come fare un quadrato con l'elemento div

Per fare un quadrato con l'elemento div, per prima cosa bisogna definire nel file HTML un div vuoto e attribuirgli una classe. Nel CSS si seleziona il div attraverso la classe, per poi impostare altezza e larghezza.

<div class="square"></div>
 body {
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      height: 100vh;
      background-color: #f1f1f1;
    }
.square {
      background-color: #2ecc71;
      width: 200px;
      height: 200px;
    }
square
  • Come fare un cerchio con l'elemento div

Puoi fare un cerchio definendo un div vuoto, dandogli un'altezza uguale alla larghezza nel file CSS, e poi un border-radius del 50%.

<div class="circle"></div>
  body {
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      height: 100vh;
      background-color: #f1f1f1;
    }

    .circle {
      background-color: #2ecc71;
      width: 200px;
      height: 200px;
      border-radius: 50%;
    }
circle
  • Come fare la bandiera della Nigeria in CSS

Fare la bandiera della Nigeria con l'elemento div non è tanto difficile. La bandiera è di forma rettangolare e di colore verde, bianco e di nuovo verde.

Per farla, definiamo tre div, ciascuno con una sua classe, poi impostiamo adeguatamente lo stile nel file CSS.

<div class="naija-flag">
    <div class="first-green"></div>
    <div class="white"></div>
    <div class="second-green"></div>
</div>
.naija-flag {
  display: flex;
}
.first-green {
  height: 100px;
  width: 60px;
  background-color: green;
}
.white {
  height: 100px;
  width: 60px;
  background-color: white;
}
.second-green {
  height: 100px;
  width: 60px;
  background-color: green;
}
naija-flag

Come impostare lo stile di un elemento div

Come detto sopra, è molto semplice impostare lo stile di un elemento div. Questo è uno dei motivi per cui gli sviluppatori lo usano per raggruppare contenuti simili.

L'elemento div accetta quasi tutte le proprietà CSS senza problemi. Vediamo alcuni esempi.

1. Come aggiungere proprietà al carattere di un div

Puoi applicare proprietà CSS come font-size, font-family, font-weight e font-style a contenuti raggruppati insieme in un elemento <div>:

<div class="font-properties">
      <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate quo
        ullam modi alias assumenda, itaque libero? Quas quidem sint illo.
      </p>
      <p>
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Necessitatibus
        ipsam eaque rem dicta, quos quas ipsum.
      </p>
</div>
body {
      max-width: 900px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0 auto;
      height: 100vh;
      background-color: #f1f1f1;
    }

.font-properties {
      font-family: cursive, sans-serif;
      font-size: 1.3rem;
      font-weight: bolder;
      font-style: italic;
    }
font

2. Come applicare un colore con un div

Puoi applicare proprietà CSS come color e background-color a contenuti raggruppati in un elemento div:

<div class="color-properties">
  <p>
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate quo
    ullam modi alias assumenda, itaque libero? Quas quidem sint illo.
  </p>
  <p>
    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Necessitatibus
    ipsam eaque rem dicta, quos quas ipsum.
  </p>
</div>
.color-properties {
  color: white;
  background-color: #2ecc71;
}
color

3. Come definire lo stile del testo con div

Puoi applicare proprietà CSS come text-transform e text-decoration a un elemento div in questo modo:

<div class="text-properties">
  <p>
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptate quo
    ullam modi alias assumenda, itaque libero? Quas quidem sint illo.
  </p>
  <p>
    Lorem ipsum dolor sit, amet consectetur adipisicing elit. Necessitatibus
    ipsam eaque rem dicta, quos quas ipsum.
   </p>
</div>
.text-properties {
    text-transform: uppercase;
    text-decoration: underline;
  }
text

4. Come creare un effetto ombra con un div

Puoi aggiungere un effetto ombra a un elemento div attraverso la proprietà box-shadow:

<div class="box-shadow">
      <p>
        Before paying to learn programming, checkout freeCodeCamp.org
        <br />
        The HTML, CSS, and JavaScript curricula would take you from zero to hero
        in web development.
      </p>
      <p>
        There is a Python curriculum that will get you a considerable knowledge
        in Python <br />
        And an upcoming Data Science curriculum.
      </p>
</div>
.box-shadow {
      font-family: cursive, sans-serif;
      background-color: #2ecc71;
      color: white;
      padding: 10px;
      border-radius: 4px;
      box-shadow: 2px 2px 20px 23px #7fecad;
    }

Cosa succede nel CSS qui sopra?

Sono riuscito a creare un effetto ombra con la proprietà CSS box-shadow.

  • Il primo valore (2px) rappresenta lo sfalsamento rispetto all'asse x (offset-x).
  • Il secondo valore (un altro 2px) rappresenta lo sfalsamento rispetto all'asse y (offset-y).
  • Il successivo 20px è il grado di sfocatura, cioè quanto vuoi che sia sfocata l'ombra.
  • Il valore 23px è il grado di diffusione (quanto vuoi che si propaghi l'ombra).
  • L'ultimo valore è il colore dell'ombra - in questo caso #7fecad.

Il risultato è questo:

box-shadow

Come usare più di un elemento div senza confonderti

L'elemento div è molto usato per tenere insieme contenuti simili. Troverai i div un po' dappertutto, nelle pagine web vecchie ma anche in quelle più recenti, nonostante i tag semantici siano raccomandati per SEO e accessibilità.

Dato che l'elemento div è ancora molto usato, ti consiglio di applicargli classe e id per poterlo maneggiare individualmente attraverso questi attributi.

Ti mostrerò come, costruendo un semplice layout.

La prima sezione che creeremo è l'intestazione, che contiene il logo e una barra di navigazione.

 <div class="header">
      <h2 class="logo">freeCodeCamp</h2>

      <ul class="nav">
        <li><a href="">Home</a></li>
        <li><a href="">About</a></li>
        <li><a href="">Serices</a></li>
        <li><a href="">Contact</a></li>
      </ul>
</div>

Prima di definire lo stile della barra di navigazione, ho fatto un po' di reset in CSS per allineare tutto correttamente e far sì che gli elementi vengano resi in modo gradevole:

* {
   margin: 0;
   padding: 0;
   box-sizing: border-box;
 }

.hero,
.about,
.services,
.contact {
  max-width: 1000px;
  margin: 0 auto;
  margin-bottom: 20px;
}

Nello snippet qui sopra:

  • Ho rimosso margine e padding preimpostati.
  • Ho impostato una lunghezza massima per le sezioni principali, in modo che non si incrocino, per migliorare l'esperienza dell'utente.
  • Ho stabilito un margine inferiore per ogni sezione per lasciare più spazio.
  • Ho impostato un margine superiore e inferiore di 0, automatico destro e sinistro per centrare il tutto.

Per impostare in modo adeguato lo stile della barra di navigazione, prenderò il contenitore div col suo attributo di classe header. Userò la proprietà flex, insieme ad altre, per dargli un aspetto gradevole. Prenderò anche il div che contiene la barra (l'elemento ul) con la sua classe e lo disporrò con Flexbox.

.header {
      padding: 0 70px;
      display: flex;
      align-content: center;
      justify-content: space-between;
      margin-top: 20px;
      margin-bottom: 20px;
    }

.nav {
      display: flex;
      align-content: center;
      justify-content: center;
      gap: 60px;
      list-style-type: none;
    }

.nav li a {
      text-decoration: none;
      color: black;
      font-size: 1.2rem;
    }

Per le altre sezioni, ad eccezione del piè di pagina, HTML e stile sono generici:

<div class="hero">
      <h1>Hero Section</h1>
</div>
<div class="about">
      <h1>About Us</h1>
</div>
<div class="services">
      <h1>Our Services</h1>
</div>
<div class="contact">
      <h1>Contact Us</h1>
</div>
<div class="footer">
      <p>&copy; 2021 All Rights Reserved</p>
</div>
.hero {
      background-color: #eee;
      height: 200px;
    }

.hero h1 {
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 6;
    }

.about {
      background-color: #eee;
      height: 200px;
    }

.about h1 {
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 6;
    }

.services {
      background-color: #eee;
      height: 200px;
    }

.services h1 {
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 6;
    }

.contact {
      background-color: #eee;
      height: 200px;
    }

.contact h1 {
      display: flex;
      align-items: center;
      justify-content: center;
      line-height: 6;
    }

.footer {
      background-color: #777;
      height: 40px;
    }

.footer p {
      margin: 0 auto;
      line-height: 1.7;
    }

Ho impostato individualmente alle sezioni un colore di sfondo grigio e un altezza di 200px. Ho posizionato l'elemento h1 al centro con Flexbox e applicato un'interlinea di 1.5.

Infine, ho aggiunto al piè di pagina un colore di sfondo più scuro, per distinguerlo, e centrato il contenuto con un'interlinea di 1.7.

Il risultato è questo:

layout

Conclusione

L'elemento HTML div è ampiamente usato dagli sviluppatori praticamente ovunque.

Tieni ben presente che dovresti usare un HTML semantico al posto dei div, a meno che nessuno (dei tag semantici) si accordi al contenuto che raggruppa. La ragione è che gli elementi semantici sono molto meglio in un'ottica di accessibilità e SEO.

In breve, il div rimane utile e non ci lascerà molto presto, quindi sentiti libero di usarlo ogni volta che ti è necessario.

Grazie della lettura e buon divertimento.