Cómo usar gradientes y modos de fusión en CSS para crear efectos en imágenes

Superponer una capa de gradiente de color sobre una fotografía es una de las formas más efectivas de hacer que el texto sea legible sobre banners principales, crear imágenes en duotono alineadas con tu marca o agregar profundidad visual sutil.
Con CSS puro, no necesitas Photoshop ni elementos adicionales en el HTML para lograrlo. Puedes superponer múltiples paradas de gradiente directamente sobre tus imágenes de fondo usando la propiedad abreviada background y background-blend-mode.
En esta guía, te voy a mostrar cómo funcionan los gradientes en CSS, cómo superponerlos sobre imágenes y cómo combinarlos con modos de fusión para lograr efectos visuales profesionales.
1. Los tipos principales de gradientes en CSS
CSS cuenta con tres funciones de gradientes distintas:
| Función de gradiente | Dirección y forma | Casos de uso comunes |
|---|---|---|
linear-gradient() | Eje direccional recto (ángulos, to right, to bottom) | Encabezados hero, capas de texto, tarjetas |
radial-gradient() | Se irradia hacia afuera desde el centro (círculo o elipse) | Efectos de foco, viñetas, resplandores |
conic-gradient() | Rota alrededor de un punto de pivote central de 360° | Ruedas de color, gráficos circulares, halos cónicos |
Ejemplos de sintaxis básica:
/* 1. Gradiente lineal: de izquierda a derecha */
.linear-box {
background: linear-gradient(to right, #3b82f6, #8b5cf6);
}
/* 2. Gradiente radial: resplandor circular */
.radial-box {
background: radial-gradient(circle at center, #38bdf8 0%, #0f172a 70%);
}
/* 3. Gradiente cónico: rotación de 360 grados */
.conic-box {
background: conic-gradient(from 45deg, #ec4899, #8b5cf6, #3b82f6, #ec4899);
}2. Superponer gradientes directamente sobre imágenes de fondo
CSS te permite definir múltiples capas de fondo separadas por comas. La primera capa de la lista se coloca arriba, y las capas siguientes se renderizan por debajo.
Para colocar un gradiente sobre una imagen, defines primero el gradiente y luego la función url():
.hero-card {
width: 100%;
min-height: 400px;
border-radius: 16px;
/* Capa 1 (Superior): Gradiente lineal oscuro semitransparente */
/* Capa 2 (Inferior): Fotografía de fondo */
background:
linear-gradient(180deg, rgba(15, 23, 42, 0.2) 0%, rgba(15, 23, 42, 0.85) 100%),
url('https://images.unsplash.com/photo-1467003909585-2f8a72700288?auto=format&fit=crop&w=1200&q=80') center / cover no-repeat;
/* Estilos de tipografía */
color: #ffffff;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding: 32px;
}Por qué esto es esencial para la accesibilidad en UI:
Un gradiente semitransparente que va desde rgba(0, 0, 0, 0.1) hasta rgba(0, 0, 0, 0.8) garantiza que el texto blanco de un título cumpla siempre con los requisitos de contraste WCAG 2.1 AA, sin importar el brillo de la fotografía que esté debajo.
3. Crear efectos de duotono y contraste con background-blend-mode
Si quieres que los colores del gradiente interactúen con los píxeles de la imagen en lugar de simplemente colocarse encima como un filtro oscuro, usa background-blend-mode:
.duotone-card {
min-height: 450px;
border-radius: 16px;
/* Gradiente vibrante de dos colores */
background-image:
linear-gradient(135deg, #4f46e5 0%, #ec4899 100%),
url('https://images.unsplash.com/photo-1467003909585-2f8a72700288?auto=format&fit=crop&w=1200&q=80');
background-size: cover;
background-position: center;
/* Modo de fusión */
background-blend-mode: multiply;
}Modos de fusión comunes para fotografía:
multiply: Oscurece la imagen y proyecta los colores del gradiente en los medios tonos y luces (ideal para portadas estilo duotono como las de Spotify).overlay: Aumenta el contraste, haciendo las luces más brillantes y las sombras más intensas mientras conserva los detalles de la imagen.screen: Aclara la composición general (excelente para estéticas suaves y luminosas).luminosity: Conserva la luminosidad de la imagen mientras tiñe todos los colores con la paleta del gradiente.
4. CSS moderno: transiciones suaves de color con color-mix()
En el CSS moderno, puedes definir paradas de opacidad suaves sin calcular manualmente los valores alfa en RGB gracias a color-mix():
.modern-gradient {
background: linear-gradient(
to bottom,
color-mix(in srgb, #0ea5e9 30%, transparent) 0%,
color-mix(in srgb, #0f172a 90%, transparent) 100%
);
}Resumen
Combinar gradientes de CSS con imágenes de fondo te da un control visual enorme sin costo de rendimiento en tiempo de ejecución:
- Coloca la capa del gradiente antes de la imagen
url()en la propiedadbackground. - Usa gradientes lineales verticales oscuros (
180deg) para garantizar la legibilidad del texto sobre imágenes hero. - Usa
background-blend-mode: multiplyuoverlaypara crear efectos de duotono llamativos. - Aprovecha los espacios de color modernos (
rgb(r g b / a)ycolor-mix()) para lograr paradas de color limpias y suaves.
Modern frontend development — Angular, React, TypeScript, accessibility, and performance.
Preguntas Frecuentes
¿Cómo superponer un gradiente sobre una imagen de fondo en CSS?
Coloca linear-gradient() o radial-gradient() antes de la imagen url() en la propiedad abreviada background de CSS: background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.8)), url('image.jpg') center/cover no-repeat.
¿Cuál es la diferencia entre linear-gradient, radial-gradient y conic-gradient?
linear-gradient realiza la transición de colores a lo largo de una línea recta direccional; radial-gradient proyecta colores hacia afuera desde un punto de origen en círculos o elipses; conic-gradient rota las transiciones de color alrededor de un punto de pivote central de 360 grados.
¿Cómo mejora background-blend-mode las superposiciones de gradiente en imágenes?
background-blend-mode define cómo se mezcla la capa del gradiente con la imagen de fondo (por ejemplo, multiply para un contraste oscuro, overlay para brillos intensos o screen para tonos claros y suaves).
¿Cómo se maneja la transparencia de color en los gradientes modernos de CSS?
Puedes usar la sintaxis moderna con barra diagonal como rgb(15 23 42 / 0.75), oklch(0.6 0.25 240 / 60%), o la función color-mix() para crear paradas de color semitransparentes limpias y sin bandas.
Artículos Relacionados
Cómo usar pseudoclases de CSS con ejemplos
Sigo reforzando mis puntos débiles en CSS y hoy es el turno de las pseudoclases. Las pseudoclases nos ayudan a definir un estado particular de un elemento. Se identifican usando dos puntos (:), tal como las usamos en enlaces con algo como a:hover.
Cómo usar combinadores de CSS con ejemplos
Sigo trabajando en mis puntos débiles con CSS, y hoy le toca el turno a los combinadores. A veces queremos seleccionar elementos sin afectar a otros y entender la relación entre ellos. Los combinadores de CSS nos ayudan a escribir mejores selectores.
Deja de duplicar la lógica de validación en Next.js con Zod
Aprende a compartir esquemas de Zod entre cliente y servidor en Next.js para asegurar la integridad de los datos sin repetir código. Foto por Clément Hélardot en Unsplash
Cómo comprobar tipos en TypeScript (Guía completa)
Aprende cómo comprobar y validar tipos en TypeScript en tiempo de compilación y en tiempo de ejecución usando typeof, instanceof, el operador in, uniones discriminadas, type guards personalizados y Zod o Valibot.
Compartir este artículo
Si esta guía te resultó útil, compártela con tu equipo o con otros desarrolladores.
Software real. Lecciones reales.
Comparto las lecciones que aprendí por las malas, para que puedas evitarlas o estar preparado cuando ocurran.
Únete a 13,800+ desarrolladores y lectores.
Cero spam. Cancela tu suscripción en cualquier momento.