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 Backbone.js contexts:
background-image: url("whatever.jpg");
Je souhaite appliquer un filtre flou CSS 3 uniquement à l'arrière-plan, mais je ne suis pas sûr de savoir comment styliser 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 de background-image
dans mon CSS, cela met en forme la page entière, plutôt que l'arrière-plan. Y at-il un moyen de sélectionner uniquement l'image et d'appliquer le filtre à cela? Sinon, existe-t-il un moyen de désactiver le flou pour tous les autres éléments de la page?
Découvrez ce stylo .
Vous devrez utiliser deux conteneurs différents, l'un pour l'image de fond 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
et left: 0; right: 0;
. La différence dans leur affichage provient des valeurs z-index
qui ont été définies différemment pour les éléments.
HTML
<div class="background-image"></div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing, quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
<p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
</div>
CSS
.background-image {
position: fixed;
left: 0;
right: 0;
z-index: 1;
display: block;
background-image: url('http://666a658c624a3c03a6b2-25cda059d975d2f318c03e90bcf17c40.r92.cf1.rackcdn.com/unsplash_527bf56961712_1.JPG');
width: 1200px;
height: 800px;
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
}
.content {
position: fixed;
left: 0;
right: 0;
z-index: 9999;
margin-left: 20px;
margin-right: 20px;
}
Toutes mes excuses pour le Lorem Ipsum Text.
Merci à Matthew Wilcoxson pour une meilleure implémentation avec .content:before
http://codepen.io/akademy/pen/FlkzB
Abolir le besoin d'un élément supplémentaire, tout en faisant en sorte que le contenu s'intègre au flux de documents plutôt que d'être fixe/absolu comme d'autres solutions.
Réalisé en utilisant
.content {
overflow: auto;
position: relative;
}
Le dépassement automatique est nécessaire, sinon le fond sera compensé de quelques pixels en haut.
Après cela, vous avez simplement besoin
.content:before {
content: "";
position: fixed;
left: 0;
right: 0;
z-index: -1;
display: block;
background-image: url('img-here');
background-size:cover;
width: 100%;
height: 100%;
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
}
EDIT Si vous souhaitez supprimer les bordures blanches des bords, utilisez une largeur et une hauteur de 110%
et une gauche et une hauteur de -5%
. Cela agrandira un peu vos arrière-plans - mais aucune couleur unie ne doit saigner des bords.
Stylo mis à jour ici: https://codepen.io/anon/pen/QgyewB - Merci à Chad Fawcett pour cette suggestion.
Comme indiqué dans d'autres réponses, ceci peut être réalisé avec:
backdrop-filter
Il existe une propriété prise en charge appelée backdrop-filter
; elle est actuellement prise en charge dans Edge , Safari et iOS Safari (voir caniuse.com pour les statistiques).
De Mozilla devdocs :
La propriété filtre de fond fournit des effets tels que le flou ou le décalage de couleur de la zone située derrière un élément, qui peuvent ensuite être vus à travers cet élément en ajustant la transparence/l'opacité de l'élément.
Vous l'utiliseriez comme ceci:
.box {
-webkit-backdrop-filter: blur(5px); // Use for Safari 9+, Edge 17+ (not a mistake) and iOS Safari 9.2+
backdrop-filter: blur(5px); // No one supports non prefixed yet
}
Pour les statistiques, voir caniuse.com
Pour ce faire, vous devez restructurer votre HTML . Vous devez brouiller tout l'élément pour brouiller l'arrière-plan. Donc, si vous voulez que l'arrière-plan soit flou, il doit être son propre élément.
Veuillez vérifier le code ci-dessous: -
.backgroundImageCVR{
position:relative;
padding:15px;
}
.background-image{
position:absolute;
left:0;
right:0;
top:0;
bottom:0;
background:url('http://www.planwallpaper.com/static/images/colorful-triangles-background_yB0qTG6.jpg');
background-size:cover;
z-index:1;
-webkit-filter: blur(10px);
-moz-filter: blur(10px);
-o-filter: blur(10px);
-ms-filter: blur(10px);
filter: blur(10px);
}
.content{
position:relative;
z-index:2;
color:#fff;
}
<div class="backgroundImageCVR">
<div class="background-image"></div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing, quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
<p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
</div>
</div>
Solution simple pour les navigateurs modernes en pure css avec un pseudo-élément 'before' comme celle de Matthew Wilcoxson . Pour éviter d'avoir à accéder au pseudo-élément afin de modifier l'image et d'autres attributs dans le script Java, il suffit d'utiliser hériter comme valeur et y accéder via l'élément parent (ici body).
body::before{
content: ""; /* important */
z-index: -1; /* important */
position: inherit;
left: inherit;
top: inherit;
width: inherit;
height: inherit;
background-image: inherit;
background-size: cover;
filter: blur(8px);
}
body{
background-image: url("xyz.jpg");
background-size: 0 0; /* image should not be drawn here */
width: 100%;
height: 100%;
position: fixed; /* or absolute for scrollable backgrounds */
}
Dans l'onglet .content
de CSS, remplacez-le par position:absolute
. Sinon, la page rendue ne pourra pas être défilée.
tout ce dont vous avez réellement besoin est "filter: blur (" Quoi!
body {
color: #fff;
font-family: Helvetica, Arial, sans-serif;
}
#background {
background-image: url('https://cdn2.geckoandfly.com/wp-content/uploads/2018/03/ios-11-3840x2160-4k-5k-beach-ocean-13655.jpg');
background-repeat: no-repeat;
background-size: cover;
width: 100vw;
height: 100vh;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
z-index: -1;
/* START */
/* START */
/* START */
/* START */
/* You can adjust the blur-radius as you'd like */
filter: blur(3px);
}
<div id="background"></div>
<p id="randomContent">Lorem Ipsum</p>
Bien sûr, ce n'est pas une solution CSS, mais vous pouvez utiliser CDN Proton avec le filtre:
body {
background: url('https://i0.wp.com/IMAGEURL?w=600&filter=blurgaussian&smooth=1');
}
from https://developer.wordpress.com/docs/photon/api/#filter
Bien que toutes les solutions mentionnées soient très astucieuses, toutes semblaient présenter des problèmes mineurs ou des répercussions potentielles sur d'autres éléments de la page lorsque je les ai essayées.
En fin de compte, pour gagner du temps, je suis simplement retourné à 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 enregistré comme image de page. :-)
HTML:
<body class="mainbody">
</body
CSS:
body.mainbody
{
background: url('../images/myphoto.blurred.png');
-moz-background-size: cover;
-webkit-background-size: cover;
background-size: cover;
background-position: top center !important;
background-repeat: no-repeat !important;
background-attachment: fixed;
}
MODIFIER:
Je l’ai enfin fait fonctionner, mais la solution n’est pas simple! Vois ici:
Maintenant, cela devient encore plus simple et plus flexible en utilisant CSS GRID.
<div class="container">
<div class="imgbg"></div>
<h2>
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facilis enim
aut rerum mollitia quas voluptas delectus facere magni cum unde?:)
</h2>
</div>
et le css:
.container {
display: grid;
width: 30em;
}
.imgbg {
background: url(bg3.jpg) no-repeat center;
background-size: cover;
grid-column: 1/-1;
grid-row: 1/-1;
filter: blur(4px);
}
.container h2 {
text-transform: uppercase;
grid-column: 1/-1;
grid-row: 1/-1;
z-index: 2;
}
div{
background: inherit;
width: 250px;
height: 350px;
position: absolute;
overflow: hidden; //adding overflow hidden
}
div:before{
content: ‘’;
width: 300px;
height: 400px;
background: inherit;
position: absolute;
left: -25px; //giving minus -25px left position
right: 0;
top: -25px; //giving minus -25px top position
bottom: 0;
box-shadow: inset 0 0 0 200px rgba(255,255,255,0.3);
filter: blur(10px);
}
Je n'ai pas écrit cela, mais j'ai remarqué qu'il y avait un polyfill pour le backdrop-filter
partiellement pris en charge à l'aide du compilateur CSS SASS. Ainsi, si vous avez un pipeline de compilation, vous pouvez le réaliser facilement: (utilise également TypeScript)
Cette réponse concerne une mise en page de carte horizontale Material Design avec hauteur dynamique et une image.
Pour éviter toute distorsion de l'image en raison de la hauteur dynamique de la carte, vous pouvez utiliser une image de remplacement en arrière-plan avec un flou pour ajuster les changements de hauteur.
<div>
avec class wrapper , qui est une Flexbox. <a>
, classe lien , est positionné relatif. <div>
classe flou et un <img>
classe image qui est l’image claire.width: 100%
, mais la classe pic a un ordre de pile plus élevé, c’est-à-dire z-index: 2
, ce qui la place au-dessus de l’espace réservé..wrapper {
display: flex;
width: 100%;
border: 1px solid rgba(0, 0, 0, 0.16);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16), 0 1px 1px rgba(0, 0, 0, 0.23);
background-color: #fff;
margin: 1rem auto;
height: auto;
}
.wrapper:hover {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}
.link {
display: block;
width: 200px;
height: auto;
overflow: hidden;
position: relative;
border-right: 2px solid #ddd;
}
.blur {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 100%;
height: 100%;
filter: blur(5px);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
}
.pic {
width: calc(100% - 20px);
max-width: 100%;
height: auto;
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 2;
}
.pic:hover {
transition: all 0.2s ease-out;
transform: scale(1.1);
text-decoration: none;
border: none;
}
.content {
display: flex;
flex-direction: column;
width: 100%;
max-width: 100%;
padding: 20px;
overflow-x: hidden;
}
.text {
margin: 0;
}
<div class="wrapper">
<a href="#" class="link">
<div class="blur" style="background: url('http://www.planwallpaper.com/static/assets/img/header.jpg') 50% 50% / cover;"></div>
<img src="http://www.planwallpaper.com/static/assets/img/header.jpg" alt="Title" class="pic" />
</a>
<div class="content">
<p class="text">Agendum dicendo memores du gi ad. Perciperem occasionem ei ac im ac designabam. Ista rom sibi vul apud tam. Notaverim to extendere expendere concilium ab. Aliae cogor tales fas modus parum sap nullo. Voluntate ingressus infirmari ex mentemque ac manifeste
eo. Ac gnum ei utor sive se. Nec curant contra seriem amisit res gaudet adsunt. </p>
</div>
</div>