La Propiedad BACKDROP-FILTER

La propiedad backdrop-filter en CSS te permite aplicar uno o más efectos visuales (como desenfoque, cambio de color, etc.) al área detrás de un elemento.
La propiedad backdrop-filter
en CSS te permite aplicar uno o más efectos visuales (como desenfoque, cambio de color, etc.) al área detrás de un elemento. Es similar a la propiedad filter
, pero en lugar de aplicarse al propio elemento, se aplica al fondo que queda detrás de él. Esto es especialmente útil para crear efectos de "vidrio esmerilado" o aplicar efectos a fondos semitransparentes.
Sintaxis Básica
La sintaxis básica para usar la propiedad backdrop-filter
es la siguiente:
selector {
backdrop-filter: valor;
}
Donde selector
es el elemento HTML al que quieres aplicar el filtro de fondo y valor
es uno o más de los valores que se describen a continuación.
Valores de la Propiedad backdrop-filter
La propiedad backdrop-filter
puede tomar los siguientes valores:
1. none
Este es el valor predeterminado. No se aplica ningún filtro al fondo del elemento.
Ejemplo:
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-image: url('https://via.placeholder.com/600x400');
background-size: cover;
}
.overlay {
background-color: rgba(255, 255, 255, 0.5); /* Fondo semitransparente */
padding: 20px;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="overlay">
Este es un elemento con un fondo semitransparente. El fondo detrás se ve claramente.
</div>
</body>
</html>
En este ejemplo, el fondo detrás del div
con la clase overlay
se ve directamente a través de su transparencia.
2. <filter-function>
Puedes aplicar una o más funciones de filtro CSS al fondo del elemento. Las funciones de filtro comunes incluyen:
-
blur(radio)
: Aplica un efecto de desenfoque gaussiano al fondo. Elradio
especifica la cantidad de desenfoque (por ejemplo,5px
).Ejemplo:
HTML<!DOCTYPE html> <html> <head> <style> body { background-image: url('https://via.placeholder.com/600x400'); background-size: cover; } .overlay { background-color: rgba(255, 255, 255, 0.5); padding: 20px; border-radius: 5px; backdrop-filter: blur(10px); /* Aplica un desenfoque de 10px al fondo */ } </style> </head> <body> <div class="overlay"> Este elemento tiene un fondo desenfocado. </div> </body> </html>
En este caso, el fondo detrás del
overlay
aparecerá desenfocado. -
brightness(porcentaje)
: Ajusta el brillo del fondo. Un valor de100%
es normal. Valores menores oscurecen, y valores mayores aclaran.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: brightness(150%); /* Aumenta el brillo del fondo */ }
-
contrast(porcentaje)
: Ajusta el contraste del fondo. Un valor de100%
es normal.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: contrast(80%); /* Disminuye el contraste del fondo */ }
-
grayscale(porcentaje)
: Convierte el fondo a escala de grises. Un valor de100%
lo convierte completamente a blanco y negro.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: grayscale(100%); /* Fondo en escala de grises */ }
-
hue-rotate(ángulo)
: Aplica una rotación de tono a los colores del fondo. El ángulo se especifica en grados (deg).Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: hue-rotate(90deg); /* Rota los tonos del fondo */ }
-
invert(porcentaje)
: Invierte los colores del fondo. Un valor de100%
invierte completamente los colores.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: invert(100%); /* Colores del fondo invertidos */ }
-
opacity(porcentaje)
: Ajusta la opacidad del fondo. Un valor de100%
es completamente opaco, y0%
es completamente transparente.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: opacity(50%); /* Fondo con 50% de opacidad */ }
-
saturate(porcentaje)
: Ajusta la saturación de los colores del fondo. Un valor de100%
es normal. Valores mayores aumentan la intensidad del color, y valores menores la disminuyen.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: saturate(200%); /* Doble saturación del color del fondo */ }
-
sepia(porcentaje)
: Aplica un tono sepia al fondo. Un valor de100%
aplica un efecto sepia completo.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: sepia(80%); /* Tono sepia al fondo */ }
-
drop-shadow(desplazamiento-x desplazamiento-y radio-de-desenfoque color)
: Aplica una sombra paralela al fondo.Ejemplo:
HTML/* ... (estructura HTML similar al ejemplo anterior) ... */ .overlay { /* ... otros estilos ... */ backdrop-filter: drop-shadow(5px 5px 10px rgba(0, 0, 0, 0.5)); /* Sombra al fondo */ }
-
Múltiples Filtros: Puedes aplicar varios filtros a la vez separándolos con espacios.
Ejemplo:
CSS.overlay { /* ... otros estilos ... */ backdrop-filter: blur(5px) brightness(120%) grayscale(20%); }
3. url()
Permite hacer referencia a un filtro SVG definido en un archivo externo.
4. Valores Globales
Como otras propiedades CSS, backdrop-filter
también acepta los valores globales: inherit
, initial
, revert
, unset
.
Ejemplos Prácticos
Ejemplo 1: Barra de Navegación Transparente con Fondo Desenfocado
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-image: url('https://via.placeholder.com/1200x800');
background-size: cover;
margin: 0;
font-family: sans-serif;
}
nav {
background-color: rgba(255, 255, 255, 0.1);
padding: 1em;
position: fixed;
top: 0;
left: 0;
width: 100%;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px); /* Para navegadores Safari */
}
nav a {
color: white;
text-decoration: none;
margin-right: 1em;
}
.contenido {
padding: 2em;
color: white;
text-align: center;
margin-top: 100px;
}
</style>
</head>
<body>
<nav>
<a href="#">Inicio</a>
<a href="#">Acerca de</a>
<a href="#">Servicios</a>
<a href="#">Contacto</a>
</nav>
<div class="contenido">
<h1>Contenido Principal</h1>
<p>Este contenido se muestra sobre una imagen de fondo.</p>
</div>
</body>
</html>
En este ejemplo, la barra de navegación tiene un fondo ligeramente transparente, y la propiedad backdrop-filter: blur(10px);
crea un efecto de desenfoque en la imagen de fondo que se ve a través de la barra de navegación. Se incluye el prefijo -webkit-
para asegurar la compatibilidad con navegadores Safari.
Ejemplo 2: Modal con Fondo Oscurecido y Desenfocado
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: #f0f0f0;
font-family: sans-serif;
}
.modal-fondo {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* Fondo oscuro semitransparente */
display: flex;
justify-content: center;
align-items: center;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px); /* Para navegadores Safari */
}
.modal-contenido {
background-color: white;
padding: 20px;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
</style>
</head>
<body>
<div class="modal-fondo">
<div class="modal-contenido">
<h2>Este es un Modal</h2>
<p>El fondo detrás está oscurecido y desenfocado.</p>
</div>
</div>
</body>
</html>
Aquí, el modal-fondo
cubre toda la pantalla con un fondo oscuro semitransparente. La propiedad backdrop-filter: blur(5px);
desenfoca el contenido que se encuentra detrás del fondo del modal, ayudando a enfocar la atención en el contenido del modal.
Consideraciones Importantes
- Contexto de Apilamiento: Para que
backdrop-filter
funcione, el elemento al que se aplica debe estar en un nuevo contexto de apilamiento. Esto a menudo se logra con propiedades comoposition: fixed
,position: absolute
o estableciendo un valor paraz-index
diferente deauto
. - Transparencia: La propiedad
backdrop-filter
solo tendrá un efecto visible si el elemento tiene algún nivel de transparencia (por ejemplo, usandobackground-color: rgba(...)
). - Rendimiento: Aplicar filtros, especialmente desenfoque, puede ser costoso en términos de rendimiento, especialmente si se aplica a elementos grandes o si se usan valores de radio de desenfoque muy altos. Úsala con moderación y prueba el rendimiento en diferentes dispositivos.
- Compatibilidad del Navegador: La compatibilidad con
backdrop-filter
es buena en los navegadores modernos, pero puede no estar disponible en versiones más antiguas o en algunos navegadores menos comunes. Es recomendable verificar la compatibilidad antes de usarla en producción.
Conclusión
La propiedad backdrop-filter
es una herramienta poderosa para crear efectos visuales modernos y atractivos en la web. Permite manipular el fondo detrás de los elementos de una manera sencilla y elegante, abriendo un mundo de posibilidades para el diseño de interfaces de usuario. ¡Experimenta con las diferentes funciones de filtro y descubre cómo puedes mejorar la estética de tus proyectos web!