Nein, dies ist nicht möglich, da sich dies opacity
auf das gesamte Element einschließlich seines Inhalts auswirkt und es keine Möglichkeit gibt, dieses Verhalten zu ändern. Sie können dies mit den beiden folgenden Methoden umgehen.
Sekundär div
Fügen Sie div
dem Container ein weiteres Element hinzu, um den Hintergrund aufzunehmen. Dies ist die browserübergreifendste Methode und funktioniert auch unter IE6.
HTML
<div class="myDiv">
<div class="bg"></div>
Hi there
</div>
CSS
.myDiv {
position: relative;
z-index: 1;
}
.myDiv .bg {
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: url(test.jpg) center center;
opacity: .4;
width: 100%;
height: 100%;
}
Siehe Testfall auf jsFiddle
: vor und :: vor Pseudoelement
Ein weiterer Trick besteht darin, die Pseudoelemente CSS 2.1 :before
oder CSS 3 zu ::before
verwenden. :before
Pseudoelement wird im IE ab Version 8 unterstützt, während das ::before
Pseudoelement überhaupt nicht unterstützt wird. Dies wird hoffentlich in Version 10 behoben.
HTML
<div class="myDiv">
Hi there
</div>
CSS
.myDiv {
position: relative;
z-index: 1;
}
.myDiv:before {
content: "";
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: url(test.jpg) center center;
opacity: .4;
}
Zusätzliche Bemerkungen
Aufgrund des Verhaltens von müssen z-index
Sie einen Z-Index für den Container sowie ein Negativ z-index
für das Hintergrundbild festlegen.
Testfälle
Siehe Testfall auf jsFiddle: