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.
💛¿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)!
🧵🔽
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.
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.
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)
🧵🔽
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...
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.
✨Se trata de una etiqueta de HTML con la que puedes crear tus propias plantillas que luego puedes reutilizar con Javascript.
¡Te lo explico!
🧵👇
⚰️ 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.
🗄️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.
🐧¿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
🧲¿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`.