Manz 🇮🇨⚡👾 Profile picture
@Twitch Partner | Web developer & Engineer | https://t.co/oZxUdJAcAG Content creator at https://t.co/29SSwBNOt5 | I❤️HTML/CSS/JS FullStack teacher at @eoi | «Odio quedarme a med

May 17, 2022, 9 tweets

💙La pseudoclase `:has()` llega a CSS💙

Una de las grandes limitaciones que siempre ha tenido CSS es la imposibilidad de dar estilo a "elementos padres" dependiendo de características de los hijos y sin Javascript.

Pero... ¡llega la pseudoclase `:has()`!
¡Te la explico!
🧵🔽

📘En CSS, una pseudoclase es una parte del selector (con prefijo `:`) con la que puedes dar estilo a un elemento con un estado especial.

Por ejemplo, uno de los más conocidos, `:hover`, selecciona el elemento si el usuario está colocando su ratón encima (estado).

💔 Existe un caso particular que puede intentarse resolver, pero que es (era) imposible hacerlo sólo con CSS.

Imaginemos un enlace `<a>` que contiene una imagen. Queremos darle unos estilos al enlace, solo cuando contenga una imagen.

📒 Se llevan +12 años intentando admitir sintaxis relacionadas para permitirlo (combinador `<` o `>>>`, `:parent`, etc...), pero nunca se llega a un consenso.

Sin embargo, con Javascript + CSS es relativamente fácil conseguirlo:

💙En CSS, tradicionalmente se le da estilo al último elemento que indicas.

Ahora, con la pseudoclase `:has()` podemos indicar cuando un elemento tiene unas ciertas propiedades (hijos, atributos, elementos posteriores, etc...) y aplicar estilos a ese padre.

Algunos ejemplos más:

1️⃣ Secciones que no tengan un encabezado `<h1>`, `<h2>`, `<h3>`, `<h4>`, `<h5>` o `<h6>`

No tienen porque ser "padres" literalmente, se pueden también hacer cosas como estas:

2️⃣ Encabezados `<h2>` que tengan a continuación un párrafo `<p>`

Compatibilidad. Caso curioso. Safari ha sido pionero desde v15.4, donde ya lo soporta. Justo ayer, Chromium lo ha planificado y está programado para el próximo Chrome 105.

Firefox está en camino: bugzil.la/418039

El resto, esperamos que se pongan las pilas pronto :-)

¿Quieres aprender más sobre CSS? ¿Y en español?
lenguajecss.com

También hago streams en Twitch y tienes mis redes sociales en:
💜manz.dev

Todos hemos pasado por esto... Te sientes identificado, ¿verdad?

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling