Nehmen wir an, ich habe
<div class="myDiv">Hi there</div>
Ich möchte ein setzen background-image
und ein opacity
von geben 0.5
- aber ich möchte, dass der Text, den ich geschrieben habe, volle Deckkraft hat ( 1
).
Wenn ich das CSS so schreiben würde
.myDiv { opacity:0.5 }
alles wird in geringer Deckkraft sein - und das will ich nicht.
Meine Frage lautet also: Wie kann ich ein Hintergrundbild mit geringer Deckkraft mit vollem Deckkrafttext erhalten?
Antworten:
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
CSS
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
CSS
Zusätzliche Bemerkungen
Aufgrund des Verhaltens von müssen
z-index
Sie einen Z-Index für den Container sowie ein Negativz-index
für das Hintergrundbild festlegen.Testfälle
Siehe Testfall auf jsFiddle:
quelle
width: 100%; height: 100%;
,.bg
damit ie6 das bg innerhalb des übergeordneten div verteilen kann. jsfiddle.net/sbGb4/2z-index
ist ein Schmerz, aber dies sollte relativ sicher sein, solange Sie dem Elternteil einen positiven Index geben.::before
. War dies derjenige, den Sie gesucht haben?Also hier ist ein anderer Weg:
quelle
linear-gradient
. Die akzeptierte Antwort, die ich schrieb, ist über 4 Jahre alt;)CSS
html
quelle
Dies kann durch Verwendung der verschiedenen div-Klasse für den Text Hi There ...
Jetzt können Sie die Stile auf die anwenden
Etikett. sonst für bg klasse. Ich bin sicher, dass es gut funktioniert
quelle
Ich habe die Lösung von Marcus Ekwall implementiert , konnte jedoch einige Dinge entfernen, um sie einfacher zu gestalten, und sie funktioniert immer noch. Vielleicht 2017 Version von HTML / CSS?
html:
CSS:
https://jsfiddle.net/abalter/3te9fjL5/
quelle
Hallo an alle, die ich gemacht habe und es hat gut funktioniert
quelle
Das Einschließen von 4 Zahlenreihen würde es zu rgba machen, nicht zu cmyk, aber so oder so würde es funktionieren (rgba = 00000088, cmyk = 0%, 0%, 0%, 50%).
quelle
Keine der Lösungen hat bei mir funktioniert. Wenn alles andere fehlschlägt, bringen Sie das Bild in Photoshop und wenden Sie einen Effekt an. 5 Minuten gegen so viel Zeit ...
quelle