Manz 🇮🇨⚡👾 Profile picture
May 17 9 tweets 4 min read
💙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

May 19
💛¿Aún no entiendes las «Arrow function» de Javascript?

Desde hace tiempo, Javascript incorpora una forma compacta y cómoda de escribir funciones en Javascript, denominada arrow function, fat arrow o "funciones flecha".

¡Te las explico (y sus curiosidades)!
🧵🔽 Image
1️⃣ Tradicionalmente, en Javascript, las funciones se escriben de la siguiente forma (y se puede seguir usando esta sintaxis).

Sin embargo, es habitual ver código donde creas functiones anónimas (sin nombre) y las guardas en una variable/constante. Image
2️⃣ Usando la notación "Función flecha" podemos escribir `=` seguido de `>` para hacer una versión «compacta» de las funciones de Javascript donde no tengamos que escribir `function`.

Algunas tipografías permiten ligaduras, y unen estos caracteres en uno solo visualmente. Image
Read 9 tweets
May 18
🧡Validaciones de formularios SIN JAVASCRIPT🧡

En un formulario web, sin las validaciones oportunas, el usuario puede insertar información de cualquier manera... Y muchas veces, así no nos sirve.

¡Te explico como validar datos sólo con HTML!
(y algunas cosas más)
🧵🔽 Image
1️⃣ Para permitir que el usuario pueda introducir datos se suele utilizar la etiqueta `<input>`. Por defecto, es un campo de texto, por lo que nos permite introducir casi cualquier cosa.

Los <input> se pueden refinar: textos, números, fechas, colores, ficheros, texto extenso... Image
2️⃣ Por ejemplo, si usamos un `<input type="number">`, evitamos que el usuario pueda meter algo que no sean números (a excepción de puntos, comas, el "número" `e`, etc...

Con los atributos `min` y `max` podemos establecer valores mínimos y máximos posibles. Image
Read 8 tweets
May 4
💛¡Las bases del DOM en un hilo!💛

📜Se conoce como DOM a la forma de referirnos a la estructura del documento HTML.

Mediante el DOM podemos cambiar el HTML/CSS dinámicamente desde Javascript y hacer cosas mágicas🧙‍♂️

¡Te explico en un par de tweets como dominarlo!

🧵⬇
1️⃣ Mediante `.querySelector()` y `.querySelectorAll()` podemos aprovechar la potencia de CSS para realizar búsquedas de elementos en el DOM.

👤El primero, devuelve un sólo elemento
👥El segundo, devuelve varios elementos

¡Olvídate de `.getElementById()` o similares!
2️⃣ Crear elementos a bajo nivel es sencillo utilizando `document.createElement()`. Esto crea un tag en memoria al que luego podemos:

💙Añadir CSS con `.classList.add()`
🧡Añadir texto con `.textContent`
❤Insertar en el DOM con `.appendChild()`
💔Eliminar del DOM con `.remove()`
Read 8 tweets
May 2
🌱¿Conocías la etiqueta <template> de HTML?

✨Se trata de una etiqueta de HTML con la que puedes crear tus propias plantillas que luego puedes reutilizar con Javascript.

¡Te lo explico!

🧵👇 Image
⚰️ La característica especial de <template> es que el código de su interior, está desconectado del DOM de la página.

💀El navegador lo trata como contenido inerte, por lo que no consume recursos, peticiones ni renderiza gráficamente en el navegador. Image
🗄️Imaginemos que tenemos un conjunto de datos, que pueden venir desde un objeto Javascript, una petición a una API o una importación de un fichero JSON.

Vamos a recorrer esos datos, clonar la plantilla e insertarlos, para finalmente renderizarlos. Image
Read 7 tweets
Apr 24
🐧¿Quieres tener una terminal de GNU/Linux nativa en tu Windows? ¡Es posible con WSL2!

✨Ejecutar apps de Linux en Windows
✨Entornos de trabajo compatibles con Linux
✅Compatible con Docker, VSCode, Node/NPM...

¡Te lo explico en 4 pasos!

🧵⬇
🐧Microsoft provee un sistema llamado WSL2 que permite ejecutar apps de Linux bajo Windows.

1️⃣ El primero paso es instalar WSL. Para ello, la forma recomendada es abrir como administrador un Símbolo del sistema y ejecutar el comando `wsl --install -d Debian`.
👁‍🗨Tras reiniciar e instalarlo todo. Tendremos WSL2 con un Linux Debian instalado, pero nos hace falta un buen emulador de terminal.

2️⃣ Windows Terminal es una opción excelente, con soporte de pestañas, apariencia, efectos y compatible con WSL:
aka.ms/windowsterminal
Read 6 tweets
Apr 23
🌌¡Crea tus propias etiquetas HTML!

🧲¿Alguna vez te has preguntado si sería posible crearte tus propias etiquetas HTML a las que darle funcionalidad?

Reutilizar y simplificar tu código HTML desde Javascript, sin librerías ni frameworks.

Hay una forma. Te explico como:
🧵⬇
🧰Esta característica se llama Custom Element (elemento personalizado) y forma parte del estándar de WebComponents.

Usando una clase Javascript basada en HTMLElement (un elemento HTML genérico) puedes crear una etiqueta HTML y añadirle funcionalidad mediante Javascript.
Pero ojo, no te olvides de lo siguiente:

✨La forma de diferenciar un custom element de una etiqueta nativa es que llevan al menos un guión (-).

✨Debes asociar tu etiqueta HTML a la clase que has definido mediante `customElements`.
Read 8 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 on Twitter!

:(