Tengo problemas para aplicar un efecto de desenfoque en un div de superposición semitransparente. Me gustaría que todo lo que hay detrás del div sea borroso, así:
Aquí hay un jsfiddle que no funciona: http://jsfiddle.net/u2y2091z/
¿Alguna idea de cómo hacer que esto funcione? Me gustaría que esto sea lo más sencillo posible y que sea entre navegadores. Aquí está el CSS que estoy usando:
#overlay {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background:black;
background:rgba(0,0,0,0.8);
filter:blur(4px);
-o-filter:blur(4px);
-ms-filter:blur(4px);
-moz-filter:blur(4px);
-webkit-filter:blur(4px);
}
html
css
blur
css-filters
Chad Johnson
fuente
fuente
CSS filter
no es compatible con Firefox, no debería usarlo.Respuestas:
Aquí hay un ejemplo que usa
svg
filter.La idea es usar un
svg
elemento con loheight
mismo que#overlay
y aplicarle elfeGaussianblur
filtro. Este filtro se aplica a unsvg
image
elemento. Para darle un efecto extruido, puede usar unbox-shadow
en la parte inferior de la superposición.Soporte de navegador para
svg
filtros .Demo on Codepen
fuente
Para una respuesta más simple y actualizada:
Tenga en cuenta que la compatibilidad con el navegador no es perfecta, pero en la mayoría de los casos un desenfoque no sería esencial.
fuente
Pude reunir información de todos aquí y buscar más en Google, y se me ocurrió lo siguiente que funciona en Chrome y Firefox: http://jsfiddle.net/xtbmpcsu/ . Todavía estoy trabajando para que esto funcione para IE y Opera.
La clave es poner el contenido dentro del div al que se aplica el filtro:
Y luego el CSS:
Entonces la máscara tiene los filtros aplicados. Además, tenga en cuenta el uso de url () para un filtro con una
<svg>
etiqueta para el valor; esa idea vino de http://codepen.io/AmeliaBR/pen/xGuBr . Si minimiza su CSS, es posible que deba reemplazar cualquier espacio en el marcado del filtro SVG con "% 20".Entonces, todo dentro de la máscara div está borroso.
fuente
filter: url(...
. Elimina eso y Chrome lo usa con éxitofilter: blur(10px);
.Si está buscando un enfoque confiable entre navegadores hoy en día , no encontrará uno excelente. La mejor opción que tiene es crear dos imágenes (esto podría automatizarse en algunos entornos) y organizarlas de manera que una se superponga a la otra. He creado un ejemplo simple a continuación:
Aunque es efectivo, incluso este enfoque no es necesariamente ideal. Dicho esto, produce el resultado deseado .
fuente
He aquí una posible solución.
HTML
CSS
Sé que el CSS se puede simplificar y probablemente debería deshacerse de los identificadores. La idea aquí es usar un div como contenedor de recorte y luego aplicar desenfoque en un duplicado de la imagen. Violín
Para que esto funcione en Firefox, tendrías que usar el hack de SVG .
fuente
-webkit-
porque no está implementado en esos navegadores. Es mejor poner la declaración estándar al final, después de todas las versiones con prefijo.En lugar de agregar otro fondo borroso a su contenido, puede usar el filtro de fondo . FYI IE 11 y Firefox pueden no admitirlo. Compruebe caniuse .
Manifestación:
fuente
fuente
Se me ocurrió esta solución.
Haga clic para ver la imagen del efecto borroso
Es una especie de truco que usa un elemento secundario absolutamente posicionado
div
, establece su imagen de fondo igual que la principaldiv
y luego usa labackground-attachment:fixed
propiedad CSS junto con las mismasbackground
propiedades establecidas en el elemento principal.Luego aplica
filter:blur(10px)
(o cualquier valor) en el div hijo.ver en codepen
fuente
Aquí hay una solución que funciona con fondos fijos, si tiene un fondo fijo y tiene algunos elementos superpuestos y necesita fondos borrosos para ellos, esta solución funciona:
Imagen tenemos este sencillo HTML:
Un fondo fijo para
<body>
o el elemento contenedor:Y aquí, por ejemplo, tenemos un elemento superpuesto con un fondo blanco transparente:
Ahora necesitamos usar exactamente la misma imagen de fondo de nuestro contenedor para nuestros elementos de superposición también, la uso como una
:before
clase psuedo:Dado que el fondo fijo funciona de la misma manera tanto en el envoltorio como en los elementos superpuestos, tenemos el fondo exactamente en la misma posición de desplazamiento del elemento superpuesto y simplemente podemos desenfocarlo. Aquí hay un violín que funciona, probado en Firefox, Chrome, Opera y Edge: https://jsfiddle.net/0vL2rc4d/
NOTA: En Firefox hay un error que hace que la pantalla parpadee al desplazarse y hay fondos borrosos fijos. si hay alguna solución, avísame
fuente
Esto hará la superposición de desenfoque sobre el contenido:
fuente