SVG + CSS: color, trazos y animación

Controla iconos e ilustraciones SVG con CSS moderno: fill, stroke, variables y animaciones ligeras.

SVG permite gráficos nítidos en cualquier resolución y CSS te da control visual directo sobre ellos.

Con propiedades como <code>fill</code>, <code>stroke</code> y <code>stroke-width</code> puedes tematizar iconos sin exportar variantes.

Las animaciones de trazo son ligeras y perfectas para microinteracciones.

  • Preferible usar SVG inline para control completo.
  • Cuando el SVG está inline en HTML, puedes seleccionar sus nodos como cualquier elemento DOM.
  • Esto facilita temas claros/oscuros con variables CSS y estados hover/focus consistentes.
  • Efecto de línea trazada con dasharray/dashoffset.
  • El patrón clásico de "draw" usa <code>stroke-dasharray</code> y anima <code>stroke-dashoffset</code> desde el total del trazo hasta 0.

Estilizar SVG con CSS

Preferible usar SVG inline para control completo.

Cuando el SVG está inline en HTML, puedes seleccionar sus nodos como cualquier elemento DOM.

Esto facilita temas claros/oscuros con variables CSS y estados hover/focus consistentes.

Animación de dibujo

Efecto de línea trazada con dasharray/dashoffset.

El patrón clásico de "draw" usa <code>stroke-dasharray</code> y anima <code>stroke-dashoffset</code> desde el total del trazo hasta 0.

Es útil para logos, checkmarks y onboarding visual.

CSS
26

SVG + CSS: color, trazos y animación

Controla iconos e ilustraciones SVG con CSS moderno: fill, stroke, variables y animaciones ligeras.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

Estilizar SVG con CSS

Preferible usar SVG inline para control completo.

1

Cuando el SVG está inline en HTML, puedes seleccionar sus nodos como cualquier elemento DOM.

2

Esto facilita temas claros/oscuros con variables CSS y estados hover/focus consistentes.

Color y trazo
.icon path { fill: #1d4ed8; }
.icon circle { stroke: #0f172a; stroke-width: 2; }
.icon:hover path { fill: #7c3aed; }

Animación de dibujo

Efecto de línea trazada con dasharray/dashoffset.

1

El patrón clásico de "draw" usa stroke-dasharray y anima stroke-dashoffset desde el total del trazo hasta 0.

2

Es útil para logos, checkmarks y onboarding visual.

Keyframes de trazo
.line {
  stroke-dasharray: 180;
  stroke-dashoffset: 180;
  animation: draw 1.2s ease forwards;
}

@keyframes draw {
  to { stroke-dashoffset: 0; }
}

🧪 Aprende probando

Ejemplo Demo: icono SVG tematizable Cambios de color en hover con CSS.
Ejemplo Demo interactiva: trazos SVG con scroll solo CSS Descubre cómo usar `pathLength`, `stroke-dasharray` y `stroke-dashoffset` sin depender de JavaScript.
Ejemplo Demo interactiva: varias curvas SVG con timing escalonado Observa cómo varios `path` pueden animarse con rangos distintos para construir una composición más rica sin salir de CSS.
Ejemplo Demo interactiva: múltiples líneas SVG a ancho completo Revisa una versión extendida con varias curvas y estirado horizontal del `viewBox` para layouts amplios.
Ejemplo Demo interactiva: trazo SVG controlado con JavaScript Compara el enfoque con JS para entender cuándo necesitas medir el path y cuándo CSS te basta.
Ejemplo Demo interactiva: scroll reveal con líneas SVG Combina `view()` y trazos SVG para revelar formas y recorridos a medida que el bloque entra en pantalla.

🏁 Retos

Reto Reto: anima un trazo SVG Crea efecto de dibujo con stroke-dashoffset.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre CSS.

Test de CSS

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .