Ist es möglich, nur mit CSS, um die background
eines Elements halbtransparent sein, aber den Inhalt (Text und Bilder) des Elements undurchsichtig machen?
Ich möchte dies erreichen, ohne dass der Text und der Hintergrund zwei separate Elemente sind.
Beim Ausprobieren:
p {
position: absolute;
background-color: green;
filter: alpha(opacity=60);
opacity: 0.6;
}
span {
color: white;
filter: alpha(opacity=100);
opacity: 1;
}
<p>
<span>Hello world</span>
</p>
Es sieht so aus, als ob untergeordnete Elemente der Deckkraft ihrer übergeordneten Elemente unterworfen sind, also opacity:1
ist relativ zum opacity:0.6
des Elternteils.
21 Stimmen
Leider nicht, CSS3 zielt darauf ab, dies mit dem neuen Farbmodul zu beheben, es würde Ihnen erlauben, einen Alpha-Wert anzugeben, wenn Sie eine Farbe angeben. w3.org/TR/css3-color
77 Stimmen
Eigentlich ist die Deckkraft der untergeordneten Elemente multipliziert durch die Deckkraft des übergeordneten Elements, nicht außer Kraft gesetzt. Wenn also zum Beispiel das
p
Die Opazität von.6
und diespan
Die Opazität von.5
dann wäre die tatsächliche Deckkraft des Textes im Bereich0.3
.0 Stimmen
Ist dieses Live-Beispiel das, was wir mit dieser Antwort erreicht haben? codepen.io/pablofiumara/pen/EIFaH
3 Stimmen
Vermutlich ja, aber da der Hintergrund durchscheinend ist, brauchen Sie den Filter/die Deckkraft nicht: codepen.io/anon/pen/ksJug
7 Stimmen
@chharvey was soll passieren, wenn ich definiere
opacity:.5
für die Eltern undopacity:2
für das untergeordnete Element?15 Stimmen
@Alexander, ich bin froh, dass Sie diese Frage gestellt haben. Mathematisch gesehen würde man vermuten, dass das Kind wieder zu einer Deckkraft von 1 zurückkehren würde,
opacity:2;
es ungültiges CSS . Der Wert deropacity
Eigenschaft muss innerhalb des umfassenden Bereichs [0,1] liegen.0 Stimmen
Können Sie
background: rgb(#, #, #,
*Gleitpunkt Zahl von 0 bis 1*);
Dadurch wird der Hintergrund undurchsichtig, wenn Sie nur eine Farbe verwenden möchten.