Flou d'arrière-plan avec les CSS
Je veux un Vista/7-aero-verre-effet de style sur un popup sur mon site, et il doit être dynamique. Je suis très bien avec ce qui n'est pas un cross-browser effet, tant que le site n' œuvres sur tous les navigateurs modernes.
Ma première tentative a été d'utiliser quelque chose comme
#dialog_base {
background:white;
background:rgba(255,255,255,0.8);
filter:blur(4px);
-o-filter:blur(4px);
-ms-filter:blur(4px);
-moz-filter:blur(4px);
-webkit-filter:blur(4px);
}
Cependant, que j'aurai prévu, ce qui a entraîné la contenu de la boîte de dialogue flou et l'arrière-plan en restant clair. Est-il possible d'utiliser CSS pour rendre flou l'arrière-plan d'un semi-élément au lieu de son contenu?
- Dans le cas où vous n'avez pas visité ce site déjà
- Je ne vois pas en quoi cela m'aide.
Vous devez vous connecter pour publier un commentaire.
OCT. 2016 mise à JOUR
Depuis le
-moz-element()
propriété ne semble pas être largement pris en charge par d'autres navigateurs, sauf pour FF, il y a encore plus facile de la technique à appliquer le flou, sans affecter le contenu du conteneur. L'utilisation de pseudoelements est idéal dans ce cas en combinaison avec svg filtre de flou.De vérifier la démo à l'aide de pseudo-élément
(Démo a été testé dans FF v49, Chrome v53, l'Opéra de 40 IE ne semble pas à l'appui de flou, soit avec du css ou de filtre svg)
Le seul moyen (pour l'instant) d'avoir un effet de flou en arrière-plan sans js plugins, est l'utilisation de
-moz-element()
bien en combinaison avec lesvg
filtre de flou. Avec-moz-element()
vous pouvez définir un élément comme une image d'arrière-plan d'un autre élément. Ensuite, vous appliquez lasvg
filtre de flou. FACULTATIF: Vous pouvez utiliser jQuery pour faire défiler si votre arrière-plan est enfixed
position.Voir mon démo ici
Je comprends, il est assez compliqué de solution et limitée à FF (
element()
ne s'applique qu'à Mozilla en ce moment avec-moz-element()
de la propriété), mais au moins il n'y a été un peu d'effort dans le passé, à mettre en œuvre dans les navigateurs webkit et nous espérons qu'il sera mis en œuvre dans l'avenir.Vous pouvez utiliser un pseudo-élément à la position de l'arrière-plan du contenu avec la même image comme arrière-plan, mais brouillée avec la nouvelle CSS3 filtre.
Vous pouvez le voir en action ici: http://codepen.io/jiserra/pen/JzKpx
Je l'ai fait que pour la personnalisation d'un select, mais j'ai ajouté un effet de flou d'arrière-plan.
content: ''
Depuis Safari 9.0, vous pouvez utiliser la toile de fond-filtre de propriété.
HTML
CSS
ou si vous avez besoin de couleur de fond différente pour les navigateurs sans soutien:
JSFiddle
Mozilla Developer: toile de fond-filtre
CanIUse
Il ya un moyen simple et technique très courante à l'aide de 2 images d'arrière-plan: une claire et floue. Vous réglez la netteté d'image comme arrière-plan pour le corps et l'floue comme une image de fond de votre récipient. Le flou de l'image doit être défini pour la correction du positionnement et l'alignement est parfait à 100%. Je l'ai utilisé avant, et cela fonctionne.
Vous pouvez voir un exemple de travail à la suite de violon: http://jsfiddle.net/jTUjT/5/. Essayez de redimensionner le navigateur et de voir que l'alignement n'échoue jamais.
Si seulement CSS
element()
a été pris en charge par d'autres navigateurs autres que Mozilla-moz-element()
vous pouvez créer de superbes effets. Voir ce démo avec Mozilla.-moz-element()
de la propriété. Fondamentalement, vous devez définir un élément comme un arrière-plan d'un autre élément. Ensuite, vous pouvez utiliser le svgfeGaussianBlur
filtre de flou sur le remplissage d'arrière-plan. Vous pouvez voir une démo en live que j'ai fait: jsfiddle.net/2VzgL . Cependant, laelement()
propriété est disponible uniquement dans mozilla et aucun autre navigateur le supporte pas encore. Mon astuce pour la compatibilité inter-navigateur serait l'utilisation de bibliothèques js et les personnaliser selon les besoins, comme Pixastic.-moz-element()
de la propriété. À se comporter comme prévu lors du défilement, il a besoin d'un peu différent de la mise en œuvre et une utilisation de jQuery. Jetez un oeil ici: jsfiddle.net/YgHA8/1Utilisation d'un élément vide de taille pour le contenu que l'arrière-plan, et la position du contenu sur les troubles de l'élément.
L'élément d'arrière-plan peut être à l'intérieur de l'élément de contenu, mais pas l'inverse.
Ce n'est pas facile si le contenu n'est pas toujours de taille constante, mais il fonctionne.
Vous pourriez le faire à travers les iframes... j'ai fait quelque chose, mais mon seul problème maintenant, c'est la synchronisation de ces divs pour faire défiler simultanée... sa manière terrible, parce que sa comme vous charger 2 sites, mais le seul moyen que j'ai trouvé... vous pouvez également travailler avec des divs et de débordement, je suppose...
De quelle manière voulez-vous qu'il dynamique? Si vous souhaitez que le popup avec succès la carte à l'arrière-plan, vous devez créer deux milieux. Il exige à la fois l'utilisation de
element()
ou-moz-element()
et un filtre (pour Firefox, utiliser un filtre SVG commefilter: url(#svgBlur)
depuis Firefox ne prend pas en charge-moz-filter: blur()
encore?). Il ne fonctionne que sous Firefox au moment de la rédaction.Voir la démo ici.
J'ai encore besoin de créer une simple démonstration pour montrer comment il est fait. Vous êtes les bienvenus pour afficher la source.