Desde selectores #CSS, se pueden seleccionar etiquetas dependiendo de sus atributos HTML.
Por ejemplo, `a[href$=".pdf"]` selecciona todos los enlaces a archivos con extensión `.pdf`, pero `a[href$=".pdf" i]` hace lo mismo sin tener en cuenta mayúsculas/minúsculas.
Las "variables CSS" no son animables por defecto. Sin embargo, mediante `@property` (Houdini CSS) podemos asignarles un tipo de dato (syntax), herencia y un valor inicial por defecto, de modo que pasan a serlo.
Si una unidad mide `0%`, `0px`, `0em`, `0rem`, etc... puedes omitir la unidad de forma segura, ya que independientemente de la unidad, va a ser '0', y funcionará igual.
Si queremos posicionar un elemento con la propiedad `position`, haciendo uso de las `top`, `bottom`, `left` y `right`, hoy en día podemos usar la propiedad de atajo `inset` la cuál resulta mucho más cómoda.
Usando el pseudoelemento `::first-letter` podemos dar estilo a la primera letra de un elemento, estableciendo (por ejemplo) una tipografía decorativa al estilo de cuentos, como Cinzel Decorative: fonts.google.com/specimen/Cinze…
Las sombras `box-shadow` permiten crear sombras en la caja (rectángulo) que aplicamos. Sin embargo, el filtro `drop-shadow()` permite crear una sombra IDÉNTICA (como una gota de agua), que respeta incluso las transparencias de una imagen.
Con la media query especial `@Media print { ... }` se pueden indicar estilos que se aplican sólo cuando el usuario imprime una página.
Puede ser útil para ocultar elementos que no tienen sentido en un formato físico, reducir la cantidad de color negro (ahorrar tinta), etc...
Utilizando la propiedad `image-rendering` al valor `pixelated` podemos cambiar el renderizado del navegador de ciertas imágenes, cambiando el algoritmo de interpolación, lo que puede ser útil por ejemplo para imágenes pixel art.
Los gradientes `linear-gradient` y `radial-gradient` son bien conocidos (incluso variantes con prefijo `repeating-*`). Pero `conic-gradient` no lo suele ser tanto. Con él podemos representar gradientes cónicos vistos desde arriba.
Bueeeeeeeeeeno... Aquí me puedes ver haciendo el pato construyendo una torreta de Portal con CSS en Twitch clips.twitch.tv/DignifiedSmoot…
¡Has llegado hasta aquí! Si te ha gustado este contenido, sígueme en Twitch ( twitch.tv/ManzDev ) donde hacemos cosas chulas con HTML+CSS+Javascript y mira mis otras redes (Youtube, Discord, etc...) para descubrir todo lo que hemos hecho...
✨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:
📘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()`!
✨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:
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!
🔽
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...)
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:
🧵
✨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.
✨ 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.
1️⃣ El primer paso es actualizar nuestro `/etc/apt/sources.list` (repositorio de paquetes). Donde pone bullseye (debian 11) debemos cambiarlo por bookworm: