J'ai du mal à appliquer un effet de flou sur une div superposition semi-transparente. J'aimerais que tout ce qui se trouve derrière la div soit flou, comme ceci:
Voici un jsfiddle qui ne fonctionne pas: http://jsfiddle.net/u2y2091z/
Des idées pour faire fonctionner cela? J'aimerais que cela soit aussi simple que possible et que ce soit multi-navigateur. Voici le CSS que j'utilise:
#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
la source
la source
CSS filter
n'est pas pris en charge sur Firefox, vous ne devriez pas l'utiliser.Réponses:
Pour une réponse plus simple et à jour:
Notez que la prise en charge du navigateur n'est pas parfaite, mais dans la plupart des cas, un flou ne serait pas essentiel.
la source
Voici un exemple qui utilise le
svg
filtre.L'idée est d'utiliser un
svg
élément avec leheight
même que le#overlay
et d'y appliquer lefeGaussianblur
filtre. Ce filtre est appliqué sur unsvg
image
élément. Pour lui donner un effet extrudé, vous pouvez utiliser unbox-shadow
en bas de la superposition.Support du navigateur pour les
svg
filtres .Demo on Codepen
la source
J'ai pu rassembler des informations de tout le monde ici et plus loin sur Google, et j'ai trouvé ce qui suit qui fonctionne dans Chrome et Firefox: http://jsfiddle.net/xtbmpcsu/ . Je travaille toujours sur ce travail pour IE et Opera.
La clé consiste à placer le contenu à l' intérieur du div auquel le filtre est appliqué:
Et puis le CSS:
Donc, le masque a les filtres appliqués. Notez également l'utilisation de url () pour un filtre avec une
<svg>
balise pour la valeur - cette idée est venue de http://codepen.io/AmeliaBR/pen/xGuBr . Si vous réduisez votre CSS, vous devrez peut-être remplacer les espaces du balisage du filtre SVG par "% 20".Alors maintenant, tout à l'intérieur du masque div est flou.
la source
filter: url(...
. Supprimez cela et Chrome utilise avec succèsfilter: blur(10px);
.Si vous recherchez aujourd'hui une approche multi-navigateurs fiable , vous n'en trouverez pas une excellente. La meilleure option que vous avez est de créer deux images (cela peut être automatisé dans certains environnements) et de les organiser de telle sorte que l'une se superpose à l'autre. J'ai créé un exemple simple ci-dessous:
Bien qu'efficace, même cette approche n'est pas nécessairement idéale. Cela étant dit, cela donne le résultat souhaité .
la source
Voici une solution possible.
HTML
CSS
Je sais que le CSS peut être simplifié et que vous devriez probablement vous débarrasser des identifiants. L'idée ici est d'utiliser un div comme conteneur de recadrage, puis d'appliquer un flou sur la duplication de l'image. Violon
Pour que cela fonctionne dans Firefox, vous devrez utiliser le piratage SVG .
la source
-webkit-
car il n'est pas implémenté dans ces navigateurs. Il est préférable de mettre la déclaration standard à la fin - après toutes les versions préfixées.Au lieu d'ajouter un autre arrière-plan flou à votre contenu, vous pouvez utiliser le filtre de fond . FYI IE 11 et Firefox peuvent ne pas le prendre en charge. Vérifiez caniuse .
Démo:
la source
la source
J'ai trouvé cette solution.
Cliquez pour voir l'image de l'effet flou
C'est une sorte d'astuce qui utilise un enfant positionné de manière absolue
div
, définit son image d'arrière-plan de la même manière que le parentdiv
et utilise ensuite labackground-attachment:fixed
propriété CSS avec les mêmesbackground
propriétés définies sur l'élément parent.Ensuite, vous appliquez
filter:blur(10px)
(ou toute valeur) sur le div enfant.vue sur codepen
la source
Voici une solution qui fonctionne avec des arrière-plans fixes, si vous avez un arrière-plan fixe et que vous avez des éléments superposés et que vous avez besoin d'arrière-plans estompés pour eux, cette solution fonctionne:
Image, nous avons ce HTML simple:
Un arrière-plan fixe pour
<body>
ou l'élément wrapper:Et ici par exemple, nous avons un élément superposé avec un fond transparent blanc:
Maintenant, nous devons utiliser exactement la même image d'arrière-plan de notre wrapper pour nos éléments de superposition, je l'utilise comme une
:before
classe psuedo:Étant donné que l'arrière-plan fixe fonctionne de la même manière dans les éléments wrapper et superposés, nous avons l'arrière-plan exactement dans la même position de défilement que l'élément superposé et nous pouvons simplement le rendre flou. Voici un violon fonctionnel, testé dans Firefox, Chrome, Opera et Edge: https://jsfiddle.net/0vL2rc4d/
REMARQUE: dans Firefox, il existe un bogue qui fait scintiller l'écran lors du défilement et des arrière-plans flous sont fixes. s'il y a une solution, faites le moi savoir
la source
Cela fera la superposition de flou sur le contenu:
la source