web-dev-qa-db-fra.com

Comment rendre flou (css) div sans élément enfant flou

<div class="row">
<div class="col-lg-3">
    <button class="btn">
         button
    </button>
</div>
    .col-lg-3{
    background-color:#8CD6EB;
    -webkit-filter: blur(3px);
    -moz-filter: blur(3px);
    -o-filter: blur(3px);
    -ms-filter: blur(3px);
    filter: blur(3px);
}

Si je ne veux pas flouter le bouton, que dois-je faire?

http://jsfiddle.net/L8ksa46g/

39
ggoha

Comment désactiver le flou sur l'élément enfant?

.enableBlur>* {
  filter: blur(1.2px);
}

.disableBlur {
  filter: blur(0);
}
<div class="enableBlur">
  <hr>
  qqqqq<br>
  <span>qqqqq</span><br>
  <hr  class="disableBlur">
  <div>aaaaa</div>
  <div>bbbbb</div>
  <div class="disableBlur">DDDDD</div>
  <hr>
  <img src="https://lh5.googleusercontent.com/-n8FG4f09-ug/AAAAAAAAAAI/AAAAAAAACmA/ldtxmWX1SyY/photo.jpg?sz=48">
  <img class="disableBlur" src="https://lh5.googleusercontent.com/-n8FG4f09-ug/AAAAAAAAAAI/AAAAAAAACmA/ldtxmWX1SyY/photo.jpg?sz=48">
</div>
3
qwabra

Lorsque vous utilisez la propriété blur ou opacity, il n'est pas possible d'ignorer l'élément enfant. Si vous appliquez l'une de ces propriétés à l'élément parent, il s'appliquera automatiquement aux éléments enfants également.

Il existe une autre solution: créez deux éléments dans votre parent div - un div pour l’arrière-plan et un autre div pour le contenu. Ensemble position:relative sur le parent div et définissez position:absolute; top:0px; right:0px; bottom:0px; left:0px; (ou définissez hauteur/largeur sur 100%) sur l'élément enfant pour l'arrière-plan. Avec cette méthode, le contenu div ne sera pas affecté par les propriétés de l’arrière-plan.

Exemple:

<div id="parent_div" style="position:relative;height:100px;width:100px;">
  <div id="background" style="position:absolute;top:0;left:0;right:0;bottom:0;background-color:red;filter: blur(3px);z-index:-1;"></div>
  <div id="textarea">My Text</div>
</div>

Si vous voyez l’arrière-plan masquer le contenu, utilisez le z-index propriété pour envoyer l’arrière-plan derrière le deuxième contenu div.

35
Ashish Panwar

Il vous suffit de créer deux divisions et d'ajuster leurs index-z et leurs marges de manière à ce que la division que vous souhaitez estomper soit située en dessous de la division que vous souhaitez voir apparaître en haut.

PS: Ne créez pas de division à l'intérieur d'une division car l'enfant hérite des propriétés du parent.

#forblur {
  height: 200px;
  width: 200px;
  background-color: blue;
  margin: auto;
  -webkit-filter: blur(3px);
  -moz-filter: blur(3px);
  -o-filter: blur(3px) -ms-filter: blur(3px);
  filter: blur(3px);
  z-index: -1;
}

#on-top-container {
  margin: auto;
  margin-top: -200px;
  text-align: center;
  height: 200px;
  width: 200px;
  z-index: 10;
}
<div id="forblur">
</div>
<div id="on-top-container">
  <p>TEXT</p>
</div>
5
Cyclops Blue