Tengo un archivo JPEG que estoy usando como imagen de fondo para una página de búsqueda, y estoy usando CSS para configurarlo porque estoy trabajando en contextos Backbone.js :
background-image: url("whatever.jpg");
Quiero aplicar un filtro de desenfoque CSS 3 solo al fondo, pero no estoy seguro de cómo diseñar solo ese elemento. Si lo intento:
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
justo debajo background-image
de mi CSS, da estilo a toda la página, en lugar de solo el fondo. ¿Hay alguna manera de seleccionar solo la imagen y aplicar el filtro a eso? Alternativamente, ¿hay alguna manera de desactivar el desenfoque para todos los demás elementos de la página?
css
background-image
css-filters
zorro
fuente
fuente
Respuestas:
Mira esta pluma .
Tendrá que usar dos contenedores diferentes, uno para la imagen de fondo y el otro para su contenido.
En el ejemplo, he creado dos contenedores
.background-image
y.content
.Ambos se colocan con
position: fixed
yleft: 0; right: 0;
. La diferencia en mostrarlos proviene de losz-index
valores que se han establecido de manera diferente para los elementos.Disculpas por el texto de Lorem Ipsum .
Actualizar
Gracias a Matthew Wilcoxson por una mejor implementación usando
.content:before
http://codepen.io/akademy/pen/FlkzBfuente
bolígrafo
Suprimir la necesidad de un elemento adicional, junto con hacer que el contenido se ajuste al flujo de documentos en lugar de ser fijo / absoluto como otras soluciones.
Logrado usando
Se necesita desbordamiento automático, de lo contrario, el fondo se compensará con unos pocos píxeles en la parte superior.
Después de esto simplemente necesitas
EDITAR Si está interesado en eliminar los bordes blancos en los bordes, use un ancho y una altura de
110%
y una izquierda y la parte superior de-5%
. Esto ampliará un poco tus fondos, pero no debería haber sangrado de color sólido desde los bordes.Pluma actualizada aquí: https://codepen.io/anon/pen/QgyewB - Gracias Chad Fawcett por la sugerencia.
fuente
width
yheight
a110%
y luego añadir un desplazamiento de-5%
atop
yleft
de lacontent:before
clase.Como se indicó en otras respuestas, esto se puede lograr con:
También puedes usar
backdrop-filter
Hay una propiedad compatible llamada
backdrop-filter
, y actualmente es compatible con Chrome 76, Edge , Safari e iOS Safari (consulte las estadísticas en caniuse.com ).De los devdocs de Mozilla :
Ver caniuse.com para estadísticas de uso.
Lo usarías así:
Actualización (06/12/2019) : Chromium se enviará con
backdrop-filter
habilitado de forma predeterminada en la versión 76 que saldrá el 30/07/2019 .Actualización (01/06/2019) : el equipo de Mozzilla Firefox ha anunciado que pronto comenzará a trabajar en su implementación.
Actualización (21/05/2019) : Chromium recién anunciado
backdrop-filter
está disponible en Chrome Chrome sin habilitar el indicador "Habilitar características de plataforma web experimental". Esto significa quebackdrop-filter
está muy cerca de implementarse en todas las plataformas de Chrome.fuente
Necesita reestructurar su HTML para hacer esto. Debe desenfocar todo el elemento para desenfocar el fondo. Entonces, si desea desenfocar solo el fondo, debe ser su propio elemento.
fuente
Por favor revise el siguiente código: -
fuente
La siguiente es una solución simple para los navegadores modernos en CSS puro con un pseudo elemento 'antes', como la solución de Matthew Wilcoxson.
Para evitar la necesidad de acceder al pseudo elemento para cambiar la imagen y otros atributos en JavaScript, simplemente utilícelo
inherit
como valor y acceda a ellos a través del elemento padre (aquíbody
).fuente
En la
.content
pestaña en CSS cámbialo aposition:absolute
. De lo contrario, la página representada no será desplazable.fuente
Aunque todas las soluciones mencionadas son muy inteligentes, todas parecían tener problemas menores o efectos potenciales con otros elementos de la página cuando los probé.
Al final para ahorrar tiempo, simplemente volví a mi solución anterior: usé Paint.NET y fui a Efectos, Desenfoque gaussiano con un radio de 5 a 10 píxeles y simplemente lo guardé como la imagen de la página. :-)
HTML:
CSS:
EDITAR:
Finalmente lo puse a funcionar, ¡pero la solución no es en absoluto sencilla! Mira aquí:
fuente
Todo lo que realmente necesitas es "filtro":
fuente
Por supuesto, esta no es una solución CSS, pero puede usar el CDN Proton con
filter
:Es de https://developer.wordpress.com/docs/photon/api/#filter
fuente
localhost
pruebas?No escribí esto, pero noté que había un polyfill para el parcialmente compatible
backdrop-filter
con el compilador CSS SASS, por lo que si tiene una tubería de compilación se puede lograr muy bien (también usa TypeScript):https://codepen.io/mixal_bl4/pen/EwPMWo
fuente
fuente
Esta respuesta es para un diseño de tarjeta horizontal de Material Design con altura dinámica y una imagen.
Para evitar la distorsión de la imagen debido a la altura dinámica de la tarjeta, puede usar una imagen de marcador de posición de fondo con desenfoque para ajustar los cambios de altura.
Explicación
<div>
clase , que es una caja flexible.<a>
, clase enlace , se posiciona con respecto .<div>
clase de marcador de posición y una imagen de clase<img>
que es la imagen clara.width: 100%
, pero la imagen de clase tiene un orden de pila más alto, es decirz-index: 2
, que lo coloca por encima del marcador de posición.Código
fuente
Ahora esto se vuelve aún más simple y flexible usando CSS GRID. Solo tiene que superponer el fondo borroso (imgbg) con el texto (h2)
y el css:
fuente
fuente
Sin usar la pseudo-clase de
fuente
Si desea que el contenido sea desplazable, establezca la posición del contenido en absoluto:
No sé si esto fue solo para mí, pero si no, ¡esa es la solución!
Además, dado que el fondo es fijo, significa que tienes un efecto de "paralaje" . Así que ahora, no solo esta persona te enseñó cómo hacer un fondo borroso, ¡sino que también es un efecto de fondo de paralaje!
fuente