Manz 🇮🇨⚡👾 Profile picture
May 17, 2022 9 tweets 4 min read Read on X
💙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!
🧵🔽 Image
📘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). Image
💔 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. Image
📒 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: Image
💙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. Image
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>` Image
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 :-) Image
¿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 Image
Todos hemos pasado por esto... Te sientes identificado, ¿verdad?

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Manz 🇮🇨⚡👾

Manz 🇮🇨⚡👾 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Manz

Feb 23
☁ ¿Qué está pasando con Cloudflare, el fútbol y el #bloqueoterceros?

En esta infografía explico que es Cloudflare y como te está afectando el bloqueo de Internet en España.

✨ Cuando creamos un sitio web y comenzamos a recibir tráfico, también comenzamos a recibir accesos de bots y atacantes, no sólo de usuarios legítimos.

Sigue 👇Image
✨ Cloudflare es un servicio gratuito (que también tiene planes opcionales de pago) que permite actuar de escudo y ayudar a filtrar bots y atacantes de los usuarios legítimos, aligerando la carga de nuestra web, que estaba dando servicio también a los usuarios no legítimos.

También puede ayudar a evitar o paliar ataques DDoS.Image
Entre otros servicios, Cloudflare también ofrece CDN, una forma de mejorar el rendimiento de tu web, evitar que se sature en picos de muchos usuarios, reducir gastos y mejorar la experiencia de tus usuarios en diferentes zonas geográficas. Image
Read 9 tweets
Jun 30, 2023
📚ROADMAP FRONTEND 2023
🧠¿En qué debo enfocarme?

✨Ruta de aprendizaje recomendada
✨No tienes que profundizar, pero si conocer bases
✨Especialízate cuando encuentres lo que te interesa
✨Es subjetiva (es mi opinión)

La explico en siguientes tweets👇
Si estás empezando, enfócate en aprender las bases:

✨ HTML/CSS
✨ Frameworks CSS: Bootstrap / Tailwind CSS
✨ Puedes usar para practicar

Aquí te enfocas en ver detalles visuales, apariencia para construir una página. https://t.co/UwA38SOg12Codepen.io
Por aquí tienes una tabla periódica de HTML para profundizar en las etiquetas HTML que existen.

Pulsando sobre cada uno de los elementos HTML, tienes más información sobre ellos, ejemplos, etc:

🧪Tabla periódica de HTML:
https://t.co/saFDMH9KjTlenguajehtml.com/html/introducc…
Read 12 tweets
Jun 25, 2023
📘En 2023... ¡La forma de escribir CSS está CAMBIANDO! ¡Y mucho!

✨Se avecinan muchos cambios (y muy potentes)
✨Mejor soporte en navegadores
✨Escribimos menos código para hacer más cosas
✨¡Nativo! Sin preprocesadores, librerías o similar

🧵¡Te las voy explicando!👇
➡ Combinador `:is()`

La clásica agrupación de selectores, ahora puedes hacerla con el combinador lógico `:is()`, que permite incluso hacer combinaciones de múltiples selectores

✨Más expresivo
✨Más fácil de leer
🧨Puedes usar `:where()` para ser menos específico
➡ Colores RGB

La nueva sintaxis de escribir colores RGB en CSS.

✨Valores porcentuales en vez de 0...255
✨Separado por espacios, sin necesidad de comas
✨Canal alfa separado por slash `/`
🧨Transparencia o no... ¡No hace falta `rgba()`!
Read 9 tweets
Jun 13, 2023
📘¡Corrige tu código CSS automágicamente!

✨Corrige al guardar en VSCode con CTRL+S
✨Reorganiza propiedades por género o categoría
✨Revisa y corrige erratas o valores incorrectos
✨Adapta a formato adecuado en líneas largas
✨Fusiona en propiedades de atajo si es posible

🔽
Para activarlo en un proyecto, simplemente escribimos en una terminal:

1️⃣ `npm install -D stylelint stylelint-config-manzdev`

2️⃣ Luego, creamos un fichero `.stylelintrc.json` y añadimos lo siguiente:

PS: Dentro de `rules` podemos añadir nuestras propias reglas personalizadas. {   extends: "stylelin...
3️⃣ Si queremos que VSCode corrija sólo, instalamos esta extensión:
marketplace.visualstudio.com/items?itemName…

Y añadimos esta configuración en `.vscode/settings.json` o en `F1` / `Settings JSON`:

✨Desactiva linters básicos
✨Activa Stylelint como linter por defecto al guardar {   "css.validate"...
Read 4 tweets
Jun 11, 2023
🆕Animaciones CSS con «Motion Paths»

Mediante CSS podemos crear trayectos y animarlos de forma muy rápida y sencilla.

✨Trayectos con la función `ray()`
✨Trayectos SVG con la función `path()`
✨Trayectos desde un .svg con la función `url()`

¡Te explico como funcionan!
🔽 <div class="container&...
Con este sencillo código (no te olvides del tamaño de alto del contenedor), obtenemos este resultado. ¿Qué es lo que ha ocurrido?

✨Hemos creado 3 trayectos
✨Los hemos animado para ir de inicio a fin
✨La magia está en la función `ray()` aunque se pueden usar otras
Por ejemplo, podemos crear trayectos con la función `path()` creando paths SVG para animar elementos y moverlos a través del trayecto (rectas, curvas, etc...)

✨Desde ficheros SVG ya creados
✨Desde trayectos SVG indicados desde CSS
✨Crea el path en yqnn.github.io/svg-path-edito…
Read 4 tweets
Jun 11, 2023
📙¿La etiqueta HTML más infravalorada?

La etiqueta `<datalist>` nos permite ampliar y potenciar con datos otras etiquetas de formulario.

✨Por ejemplo, podemos convertir un <input> de texto en un híbrido con <select>, abierto a nuevas opciones, con filtro de autocompletado:

🧵 <input type="text"...
✨Utilizada junto a un <input> de fechas, podemos predefinir varias fechas como si fuera un <select>, y dar la opción de escoger "Otras..." para mostrar el selector de fechas tradicional. <input type="date"...
✨ Utilizada junto a un <input> de colores, podemos predefinir colores específicos, de modo que el usuario pueda escoger el color concreto, o mostrar el color picker del sistema. <input type="color&quo...
Read 5 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(