🧩 CSS Nesting: scrivere fogli di stile più puliti e leggibili

  


Negli ultimi anni, il CSS ha fatto passi da gigante grazie a nuove funzionalità che rendono la scrittura dei fogli di stile più semplice e moderna. Una delle novità più interessanti è il CSS Nesting, una caratteristica che permette di scrivere regole annidate, in modo simile a quanto già accade nei preprocessor come Sass o Less.

🔗 Ti piace Techelopment? Dai un'occhiata al sito per tutti i dettagli!

🔍 Cos’è il CSS Nesting

Tradizionalmente, in CSS ogni selettore va scritto separatamente.
Ad esempio, se vogliamo stilizzare una lista di navigazione con i suoi link, scriviamo qualcosa come:

nav {
  background-color: #222;
}

nav ul {
  list-style: none;
}

nav li {
  display: inline-block;
}

nav a {
  color: white;
  text-decoration: none;
}

Questo approccio funziona, ma diventa presto verboso e difficile da mantenere, soprattutto in progetti grandi.
Con il CSS nesting, possiamo “annidare” le regole in modo molto più naturale:

nav {
  background-color: #222;

  ul {
    list-style: none;
  }

  li {
    display: inline-block;
  }

  a {
    color: white;
    text-decoration: none;
  }
}

Molto più pulito, vero? 😎


🧠 Come funziona il nesting in CSS

Il CSS nesting è stato ufficialmente introdotto come parte della CSS Nesting Module Level 1 e ormai è supportato dalla maggior parte dei browser moderni (Chrome, Edge, Safari e Firefox dalla versione 117 in poi).

La logica è semplice:
– Le regole annidate devono essere contenute all’interno di un selettore genitore.
– Se serve riferirsi al selettore stesso (il “genitore”), si usa il simbolo &.

Esempio pratico:

button {
  color: white;
  background-color: #007bff;

  &:hover {
    background-color: #0056b3;
  }

  &.active {
    background-color: #003f7f;
  }
}

Qui il simbolo & rappresenta il selettore button.
Quindi &:hover diventa button:hover, e &.active diventa button.active.


⚙️ Regole e limitazioni

Anche se il nesting rende il codice più compatto, ci sono alcune regole da ricordare:

  1. Ogni blocco annidato deve iniziare con un selettore valido.
    Non puoi scrivere semplicemente proprietà dopo un’altra regola annidata.

✅ Corretto:

.card {
  color: #333;
  header {
    font-weight: bold;
  }
}

❌ Errato:

.card {
  color: #333;
  header { font-weight: bold; }
  font-size: 16px; /* Non valido: proprietà dopo un blocco annidato */
}
  1. Non abusare del nesting.
    Se annidi troppi livelli (più di 3 o 4), il codice diventa difficile da leggere.
    Il nesting è utile per strutture logiche, non per riprodurre l’intero DOM.

💡 Buone pratiche

  • Mantieni il nesting “piatto”: non superare 3 livelli.
  • Usa & in modo esplicito per hover, focus e varianti di stato.
  • Evita il nesting inutile se il selettore è già chiaro o riutilizzato altrove.

Esempio di codice “pulito”:

.card {
  padding: 1rem;
  background: white;
  border-radius: 8px;

  h2 {
    font-size: 1.2rem;
  }

  a {
    color: royalblue;

    &:hover {
      text-decoration: underline;
    }
  }
}

🚀 Compatibilità e strumenti

Il CSS nesting è nativamente supportato in:

  • Chrome 112+
  • Safari 16.5+
  • Edge 112+
  • Firefox 117+

Se lavori su progetti che devono supportare browser più vecchi, puoi usare PostCSS con il plugin postcss-nesting, che converte il CSS moderno in una versione compatibile.


🧾 Conclusione

Il CSS nesting è una delle aggiunte più eleganti e produttive al linguaggio degli ultimi anni.
Rende i fogli di stile più modulari, leggibili e facili da mantenere, senza dover ricorrere a preprocessor esterni.

Se non lo hai ancora provato, è il momento giusto per iniziare a scrivere CSS più moderno e ordinato!


Riferimenti



Follow me #techelopment

Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment