• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Daniele CartaMarzo 3, 2025 3 min di lettura

CSS Nativo: ora è tutta un’altra storia – Parte 1

Frontend
facebooktwitterlinkedinreddit

CSS nativo, il linguaggio più temuto dai Frontend Developer. C’è chi lo ama e chi lo odia.

In questo articolo, proverò a spiegarti perché io personalmente lo amo sempre di più. Parleremo di CSS nativo e di come negli ultimi anni, il CSS si è evoluto e ha raggiunto molte funzionalità messe a disposizione da pre processori come SASS e LESS.

Recommended article
Maggio 26, 2025

10 consigli per diventare esperto di React!

Lucilla Tomassi

Lucilla Tomassi

Frontend
Indice:
  1. CSS Nesting
    • Ma i browser cosa ne pensano?
  2. Cos'è @scope?
  3. A cosa serve @layer?
  4. Color scheme
  5. Is e has
    • :is
    • :has
  6. Conclusioni

CSS Nesting

Il CSS Nesting è una funzionalità introdotta di recente in CSS, che permette di scrivere regole annidate in maniera più leggibile e concisa, simile a quanto accade nei preprocessori CSS come SASS o LESS.

Quindi, non avrete più bisogno di utilizzare dei pre processori ma di default potrete scrivere CSS in questo modo:

article {
color: black;

& h1 {
font-size: 2rem;
}

& p {
line-height: 1.5;
}
}

Ma i browser cosa ne pensano?

Di seguito le compatibilità dei principali browser (aggiornato a Gennaio 2025).

Supporto dei browser: https://caniuse.com/css-nesting

Cos’è @scope?

@scope consente di definire un contesto o un ambito (scope) per i selettori CSS.

Invece di applicare stili globalmente o dipendere da regole di specificità e nidificazione complessa, è possibile restringere l’applicazione degli stili a un sottogruppo specifico del DOM.

Un esempio molto pratico:

@scope (section) {
h1 {
color: blue;
}
}

In questo caso, verrà applicato lo style solo agli h1 presenti all’interno dei tag section.
Questo permette di definire del CSS mirato e ben definito all’interno di uno scope.

Come potrai constatare dal seguente link, @scope non è ancora supportato completamente da tutti i browser moderni.

Supporto dei browser: https://caniuse.com/css-cascade-scope

A cosa serve @layer?

@layer è una direttiva CSS che consente di definire livelli di stile (layers) con una gerarchia di priorità.

Funziona per organizzare il CSS in sezioni ben definite e per garantire che le regole di stile più importanti abbiano la precedenza su quelle meno rilevanti, anche se vengono definite più tardi nel codice.

Di seguito un esempio di sintassi:

@layer base {
  h1 {
    color: blue;
  }
}Code language: CSS (css)

Appunto in merito alle priorità, nota bene una cosa molto importante. Guarda questo esempio:

@layer utilities {
  h1 {
    color: green;
  }
}

@layer base {
  h1 {
    color: blue;
  }
}Code language: CSS (css)

In questo caso, la regola in utilities avrà priorità su quella in base perché utilities è stato dichiarato per primo, anche se la regola in base appare più tardi nel foglio di stile.

Supporto dei browser: https://caniuse.com/css-cascade-layers

Color scheme

Tutti i più recenti sistemi operativi, browser e di conseguenza applicazioni supportano la modalità dark e light. Da questo punto di vista, CSS ci viene incontro con la @media query prefers-color-scheme.

Con questa media query, possiamo andare a definire delle variabili, ma anche del CSS specifico per una modalità o per l’altra.

Un esempio pratico:

:root {
  --background-color: white;
  --text-color: black;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: black;
    --text-color: white;
  }
}

body {
  background-color: var(--background-color);
  color: var(--text-color);
}Code language: CSS (css)

Supporto dei browser: https://caniuse.com/?search=prefers-color-scheme

Is e has

:is

La pseudo-classe :is() (abbreviazione di “is”) permette di scrivere selettori più concisi e leggibili combinando più selettori in una singola dichiarazione.

Prima

section h1, article h1 {
  font-size: 2rem;
}Code language: CSS (css)

Dopo

:is(section, article) h1 {
  font-size: 2rem;
}Code language: CSS (css)

:has

Il pseudo-classe :has() in CSS è un selettore relazionale che permette di applicare stili a un elemento in base ai suoi discendenti, figli o anche fratelli successivi.

Di seguito un esempio molto semplice, dove andremo ad applicare del CSS SOLO ai div che contengono al loro interno un tag p:

div:has(p) {
  border: 2px solid blue;
}Code language: CSS (css)

Conclusioni

Negli ultimi anni, il CSS si è evoluto enormemente, incorporando funzionalità che prima erano possibili solo attraverso l’uso di pre processori come SASS o LESS.

Migliorie come il CSS Nesting, @scope, @layer, e le pseudo-classi :is e :has rendono il linguaggio più potente e flessibile, permettendo agli sviluppatori di scrivere codice più leggibile, organizzato e mirato.

In particolare:

  • Il CSS Nesting elimina la necessità di preprocessori per scrivere regole annidate, semplificando la struttura dei fogli di stile.
  • @scope introduce un controllo granulare sugli stili, migliorando la modularità del CSS.
  • @layer consente di definire gerarchie e priorità tra gli stili, evitando conflitti e migliorando la manutenibilità.
  • La media query prefers-color-scheme supporta modalità dark e light in modo nativo, rispondendo alle esigenze moderne di accessibilità e design.
  • Le pseudo-classi :is e :has migliorano la potenza espressiva dei selettori, rendendo il CSS più versatile e conciso.

Nonostante alcune di queste funzionalità non siano ancora pienamente supportate da tutti i browser, il panorama sta cambiando rapidamente.

È il momento ideale per iniziare a sperimentare con queste nuove caratteristiche e preparare i propri progetti per il futuro del web. Il CSS non è mai stato così moderno, efficiente e completo.

Bene, siamo arrivati alla fine di questo primo articolo di questa piccola rubrica dedicata al CSS. Prossimamente uscirà il secondo articolo che toccherà argomenti come: zoom, text-wrap e molto altro ancora!

Codemotion Collection Background
Dalla community
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection Dalla community dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit

Tagged as:CSS css nativo dev nesting

Daniele Carta
Con oltre 10 anni di esperienza nel settore IT, attualmente sono Head of Frontend presso AltermAInd, dove guido strategie e innovazioni nel campo dello sviluppo front-end.
Composer: come funziona il gestore di pacchetti di PHP
Previous Post
Lean Web: principi per uno sviluppo web sostenibile
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions