Mon objectif est d'avoir un div avec n'importe quel arrière-plan, qui utilise ensuite un pseudo-élément pour créer une superposition blanche transparente, "éclaircissant" ainsi l'arrière-plan du div. La "superposition" doit cependant être SOUS le contenu du div. Ainsi, dans l'exemple suivant:
<div class="container">
<div class="content">
<h1>Hello, World</h1>
</div>
</div>
.container {
background-color: red;
width: 500px;
height: 500px;
position: relative;
}
.content {
background-color: blue;
width: 250px;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1;
background-color: rgba(255, 255, 255, .8);
}
Le .content
div
ne doit pas être "en dessous" de la superposition blanche, alias .container::before
.
Je préférerais ne pas avoir à utiliser z-index
sur .content
, mais je peux si c'est la seule solution.
Objectif final: le rouge doit être couvert tandis que le texte et le bleu ne le sont pas.
JS fiddle: http://jsfiddle.net/1c5j9n4x/
Si le pseudo-élément a un z-index
, vous devez alors positionner le .content
élément et ajoutez un z-index
valeur à établir un contexte d'empilement .
.content {
background-color: blue;
width: 250px;
position: relative;
z-index: 1;
}
..vous pourrait supprimer également le z-index
du pseudo-élément, puis positionnez simplement le .content
élément. Pour ce faire, aucun des éléments n'a besoin d'un z-index
. La raison pour laquelle cela fonctionne est que le :before
le pseudo-élément est essentiellement un élément frère précédent. Ainsi, le .content
l'élément est positionné en haut.
.content {
background-color: blue;
width: 250px;
position: relative;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
background-color: rgba(255, 255, 255, .8);
}