Una grossa limitazione nel CSS è l'imposibilità di applicare stili sulla base del contenuto o i sui discendenti. Con l'introduzione del selettore :has avviene un cambiamento radicale: gli sviluppatori possono applicare stili in base a condizioni che prima richiedevano workaround complessi o l'uso di JavaScript.
A differenza dei selettori tradizionali che funzionano solo "dall'alto verso il basso", :has() permette di invertire la logica.
elemento:has(selettore)
L'applicazione non richiede conoscenze aggiuntive a quelle che già abbiamo. Supponiamo di voler stilizzare tutti i tag div che contengono un p al loro interno.
div:has(p) {
border: 1px solid red;
}Allo stesso modo possiamo specificare una classe applicata all'elemento figlio.
ul:has(li.active) {
color: green;
}Inoltre con :has(), possiamo anche applicare stili in base allo stato, come un campo di input in focus.
form:has(input:focus) {
background-color: lightblue;
}Come abbiamo potuto notare la sintassi rispecchia i selettori CSS esistenti, aumentandone la leggibilità ed evitando la stesura di complicato codice Javascript per gestire ogni eventuale casistica.
In questo ultimo esempio vogliamo gestire il colore del font solamente nel caso in cui il div
- Abbia un primo discendente che sia un p
- Contenga un ul con almeno un primo figlio li
div:has(> p, ul li:first-child) {
color: blue;
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare i costi con Smart tier in Azure Blob Storage
Gestire gli errori nelle Promise JavaScript con try()
Impostare automaticamente l'altezza del font tramite CSS
Definire il metodo di rilascio in .NET Aspire
Personalizzare i parametri del CSS Scroll Snap
Importare repository da Bitbucket a GitHub Enterprise Cloud
Montare Azure Blob Storage su Linux con BlobFuse2
Testare il failover sulle region in Azure Storage
Keynote .NET Conference Italia 2025
Gestione delle scrollbar dinamiche in HTML e CSS
Configurare OpenAI in .NET Aspire
Utilizzare Intersect e Except per filtrare set di dati in TSql




