CSS Mask: recortes, fades y texto sin editar imágenes

Aprende a usar `mask-image`, gradientes y SVG para crear recortes visuales, focos y transiciones limpias sin tocar el asset original.

🎯 `mask` te permite decidir qué parte de un bloque permanece visible sin recortar la imagen original.

🧠 El modelo mental correcto es este: primero tienes contenido, luego una máscara, y el navegador calcula la visibilidad final.

✨ Con gradientes y SVG puedes construir fades, focos, franjas o texto recortado con un coste visual muy bajo.

🛟 En producción conviene pensar en compatibilidad, por eso suele acompañarse con prefijos `-webkit-mask-*` y fallbacks simples.

  • No modifica el asset: modifica su visibilidad.
  • Una máscara actúa como una capa intermedia entre el contenido y el render final. Las zonas opacas permanecen visibles y las transparentes desaparecen.
  • Esto la convierte en una herramienta muy útil para interfaces donde quieres dirigir la atención, suavizar bordes o revelar solo una parte del contenido.
  • Sirve para imágenes, fondos y bloques completos.
  • Puedes generarla con gradientes, SVG inline o archivos externos.

Qué hace realmente una máscara

No modifica el asset: modifica su visibilidad.

Una máscara actúa como una capa intermedia entre el contenido y el render final. Las zonas opacas permanecen visibles y las transparentes desaparecen.

Esto la convierte en una herramienta muy útil para interfaces donde quieres dirigir la atención, suavizar bordes o revelar solo una parte del contenido.

  • Sirve para imágenes, fondos y bloques completos.
  • Puedes generarla con gradientes, SVG inline o archivos externos.
  • Escala mejor que editar una imagen distinta para cada variante.

Gradientes como máscaras: fade, spotlight y franjas

El uso más práctico empieza con `radial-gradient()` y `linear-gradient()`.

Un `linear-gradient()` funciona muy bien para fundidos verticales o laterales. Un `radial-gradient()` es ideal para focos, recortes circulares o zonas de atención.

Cuando necesitas algo más expresivo, puedes combinar varias capas y controlar su escala con `mask-size`, `mask-position` y `mask-repeat`.

Máscaras con SVG y texto

Cuando el gradiente se queda corto, SVG te da formas más precisas.

SVG es especialmente útil para letras gigantes, geometrías irregulares o recortes de branding. En vez de exportar variantes raster, puedes mantener el contenido vivo y cambiar solo la máscara.

Este enfoque encaja muy bien en heroes editoriales, portadas de curso y bloques promocionales donde quieres un efecto visual fuerte sin perder flexibilidad.

  • Texto grande como máscara para titulares visuales.
  • Formas orgánicas o logos con más control que un gradiente.
  • Combinación potente con animaciones de scroll y hover.

Compatibilidad y fallback razonable

La técnica es muy útil, pero no debe romper la experiencia.

En navegadores basados en WebKit todavía es habitual declarar tanto `mask-*` como `-webkit-mask-*`. Si el recorte es decorativo, el fallback puede ser simplemente mostrar el contenido completo.

Cuando el efecto es importante para entender la interfaz, conviene envolverlo en `@supports` o degradarlo a una versión más simple con borde redondeado, overlay o clip-path.

Animar clip-path con intención

CSS
19

CSS Mask: recortes, fades y texto sin editar imágenes

Aprende a usar `mask-image`, gradientes y SVG para crear recortes visuales, focos y transiciones limpias sin tocar el asset original.

Código del tema: mask-image: radial-gradient(circle at center, #000 0 34%, transparent 58%);

📘 Teoría

Qué hace realmente una máscara

No modifica el asset: modifica su visibilidad.

Una máscara actúa como una capa intermedia entre el contenido y el render final. Las zonas opacas permanecen visibles y las transparentes desaparecen.

Esto la convierte en una herramienta muy útil para interfaces donde quieres dirigir la atención, suavizar bordes o revelar solo una parte del contenido.

  • Sirve para imágenes, fondos y bloques completos.
  • Puedes generarla con gradientes, SVG inline o archivos externos.
  • Escala mejor que editar una imagen distinta para cada variante.

Gradientes como máscaras: fade, spotlight y franjas

El uso más práctico empieza con `radial-gradient()` y `linear-gradient()`.

1

Un `linear-gradient()` funciona muy bien para fundidos verticales o laterales. Un `radial-gradient()` es ideal para focos, recortes circulares o zonas de atención.

2

Cuando necesitas algo más expresivo, puedes combinar varias capas y controlar su escala con `mask-size`, `mask-position` y `mask-repeat`.

Spotlight básico con gradiente radial
.media {
  -webkit-mask-image: radial-gradient(circle at 50% 45%, #000 0 32%, transparent 56%);
  mask-image: radial-gradient(circle at 50% 45%, #000 0 32%, transparent 56%);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

Máscaras con SVG y texto

Cuando el gradiente se queda corto, SVG te da formas más precisas.

SVG es especialmente útil para letras gigantes, geometrías irregulares o recortes de branding. En vez de exportar variantes raster, puedes mantener el contenido vivo y cambiar solo la máscara.

Este enfoque encaja muy bien en heroes editoriales, portadas de curso y bloques promocionales donde quieres un efecto visual fuerte sin perder flexibilidad.

  • Texto grande como máscara para titulares visuales.
  • Formas orgánicas o logos con más control que un gradiente.
  • Combinación potente con animaciones de scroll y hover.

Compatibilidad y fallback razonable

La técnica es muy útil, pero no debe romper la experiencia.

1

En navegadores basados en WebKit todavía es habitual declarar tanto `mask-*` como `-webkit-mask-*`. Si el recorte es decorativo, el fallback puede ser simplemente mostrar el contenido completo.

2

Cuando el efecto es importante para entender la interfaz, conviene envolverlo en `@supports` o degradarlo a una versión más simple con borde redondeado, overlay o clip-path.

Fallback defensivo
.cover {
  border-radius: 24px;
  overflow: hidden;
}

@supports ((mask-image: linear-gradient(#000, transparent)) or (-webkit-mask-image: linear-gradient(#000, transparent))) {
  .cover {
    overflow: visible;
    -webkit-mask-image: linear-gradient(#000, transparent);
    mask-image: linear-gradient(#000, transparent);
  }
}

Animar clip-path con intención

🧭 Visuales clave

Cómo funciona una máscara CSS

Explica el modelo mental de `mask`: contenido base, capa de visibilidad y recorte final para entender por qué la imagen no se edita, solo se revela u oculta.

Diagrama que muestra contenido original, máscara y resultado final al aplicar CSS mask.

🧪 Aprende probando

Ejemplo Demo interactiva: generador visual de CSS mask Explora fades, spotlight, franjas y texto recortado para entender cómo cambian `mask-image`, `mask-size` y `mask-position` en tiempo real.
Ejemplo Demo guiada: tarjeta con fade inferior Aplica una máscara lineal para suavizar el final de una imagen y dejar espacio al texto.

🏁 Retos

Reto Reto: spotlight sobre una imagen decorativa Crea un foco central con `radial-gradient()` y evita que la máscara se repita.

🧰 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 .