Modelo mental correcto
Piensa en :has() como una condición booleana sobre el elemento actual.
En .card:has(img), no seleccionas la imagen: seleccionas la tarjeta si contiene una imagen. Esto cambia la forma de pensar CSS, porque puedes estilizar el contenedor según lo que ocurre dentro.
En formularios, :has() permite reglas globales de estado: por ejemplo, form:has(:invalid) o .field:has(input:focus). El resultado es menos JavaScript y menos clases temporales.
- Seleccionar padres por contenido o estado interno.
- Construir feedback visual sin depender de eventos JS.
- Reducir clases auxiliares y mantener HTML más limpio.