J'ai un fichier JPEG que j'utilise comme image d'arrière-plan pour une page de recherche, et j'utilise CSS pour le définir car je travaille dans des contextes Backbone.js :
background-image: url("whatever.jpg");
Je souhaite appliquer un filtre de flou CSS 3 uniquement à l'arrière-plan, mais je ne sais pas comment styliser uniquement cet élément. Si j'essaye:
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
juste en dessous background-image
dans mon CSS, il stylise toute la page, plutôt que juste l'arrière-plan. Existe-t-il un moyen de sélectionner uniquement l'image et d'y appliquer le filtre? Sinon, existe-t-il un moyen de désactiver le flou pour tous les autres éléments de la page?
css
background-image
css-filters
Renard
la source
la source
Réponses:
Découvrez ce stylo .
Vous devrez utiliser deux conteneurs différents, l'un pour l'image d'arrière-plan et l'autre pour votre contenu.
Dans l'exemple, j'ai créé deux conteneurs,
.background-image
et.content
.Les deux sont placés avec
position: fixed
etleft: 0; right: 0;
. La différence dans leur affichage provient desz-index
valeurs qui ont été définies différemment pour les éléments.Toutes mes excuses pour le texte de Lorem Ipsum .
Mise à jour
Merci à Matthew Wilcoxson pour une meilleure implémentation en utilisant
.content:before
http://codepen.io/akademy/pen/FlkzBla source
stylo
Abolir le besoin d'un élément supplémentaire, tout en adaptant le contenu au flux de documents plutôt que d'être fixe / absolu comme les autres solutions.
Atteint en utilisant
Un débordement automatique est nécessaire, sinon l'arrière-plan sera compensé de quelques pixels en haut.
Après cela, vous avez simplement besoin
MODIFIER Si vous souhaitez supprimer les bordures blanches sur les bords, utilisez une largeur et une hauteur de
110%
et un gauche et un haut de-5%
. Cela agrandira un peu vos arrière-plans, mais il ne devrait pas y avoir de saignement de couleur unie à partir des bords.Stylo mis à jour ici: https://codepen.io/anon/pen/QgyewB - Merci Chad Fawcett pour la suggestion.
la source
width
etheight
vers110%
puis ajouter un décalage de-5%
verstop
etleft
de lacontent:before
classe.Comme indiqué dans d'autres réponses, cela peut être réalisé avec:
Vous pouvez aussi utiliser
backdrop-filter
Il existe une propriété prise en charge appelée
backdrop-filter
, et elle est actuellement prise en charge dans Chrome 76, Edge , Safari et iOS Safari (voir caniuse.com pour les statistiques).Depuis les devdocs de Mozilla :
Voir caniuse.com pour les statistiques d'utilisation.
Vous l'utiliseriez ainsi:
Mise à jour (12/06/2019) : Chromium sera livré avec
backdrop-filter
activé par défaut dans la version 76 qui doit sortir le 30/07/2019 .Mise à jour (01/06/2019) : L'équipe de Mozzilla Firefox a annoncé qu'elle commencerait à travailler sur l'implémentation de cela bientôt.
Mise à jour (21/05/2019) : Chromium qui vient d'être annoncé
backdrop-filter
est disponible dans Chrome Canary sans activer l'indicateur "Activer les fonctionnalités de la plateforme Web expérimentale". Cela signifie qu'ilbackdrop-filter
est très proche d'être implémenté sur toutes les plateformes Chrome.la source
Vous devez restructurer votre code HTML pour ce faire. Vous devez flouter tout l'élément afin de rendre l'arrière-plan flou. Donc, si vous voulez flouter uniquement l'arrière-plan, il doit s'agir de son propre élément.
la source
Veuillez vérifier le code ci-dessous: -
la source
Ce qui suit est une solution simple pour les navigateurs modernes en CSS pur avec un pseudo-élément «avant», comme la solution de Matthew Wilcoxson.
Pour éviter d'avoir besoin d'accéder au pseudo-élément pour changer l'image et d'autres attributs en JavaScript, utilisez simplement
inherit
comme valeur et accédez-y via l'élément parent (icibody
).la source
Dans l'
.content
onglet CSS, changez-le enposition:absolute
. Sinon, la page rendue ne pourra pas défiler.la source
Bien que toutes les solutions mentionnées soient très intelligentes, toutes semblaient avoir des problèmes mineurs ou des effets potentiels sur d'autres éléments de la page lorsque je les ai essayés.
En fin de compte, pour gagner du temps, je suis simplement revenu à mon ancienne solution: j'ai utilisé Paint.NET et je suis allé à Effects, Gaussian Blur avec un rayon de 5 à 10 pixels et je l'ai simplement enregistré en tant qu'image de page. :-)
HTML:
CSS:
ÉDITER:
Je l'ai finalement fait fonctionner, mais la solution n'est pas simple! Vois ici:
la source
Tout ce dont vous avez réellement besoin est un "filtre":
la source
Bien sûr, ce n'est pas une solution CSS, mais vous pouvez utiliser le CDN Proton avec
filter
:Il s'agit de https://developer.wordpress.com/docs/photon/api/#filter
la source
localhost
pendant les tests?Je n'ai pas écrit cela, mais j'ai remarqué qu'il y avait un polyfill pour le partiellement pris
backdrop-filter
en charge en utilisant le compilateur CSS SASS, donc si vous avez un pipeline de compilation, il peut être bien réalisé (il utilise également TypeScript):https://codepen.io/mixal_bl4/pen/EwPMWo
la source
la source
Cette réponse est pour une disposition de carte horizontale Material Design avec une hauteur dynamique et une image.
Pour éviter une distorsion de l'image due à la hauteur dynamique de la carte, vous pouvez utiliser une image d'espace réservé d'arrière-plan avec flou pour ajuster les changements de hauteur.
Explication
<div>
with class , qui est une boîte flexible.<a>
, classe lien , est positionné par rapport .<div>
classe d' espace réservé et une image de classe qui est l'image claire.<img>
width: 100%
, mais la classe pic a un ordre de pile plus élevé, c'est-à-direz-index: 2
qui le place au-dessus de l'espace réservé.Code
la source
Maintenant, cela devient encore plus simple et plus flexible en utilisant CSS GRID.Il suffit de chevaucher l'arrière-plan flou (imgbg) avec le texte (h2)
et le css:
la source
la source
Sans utiliser la pseudo-classe de
la source
Si vous souhaitez que le contenu puisse défiler, définissez la position du contenu sur absolu:
Je ne sais pas si c'était juste pour moi, mais sinon c'est la solution!
De plus, comme l'arrière-plan est fixe, cela signifie que vous avez un effet de "parallaxe" ! Alors maintenant, non seulement cette personne vous a appris à faire un arrière-plan flou, mais c'est aussi un effet d'arrière-plan de parallaxe!
la source