2010-03-03 15 views
14

ich Text in einem transparenten div keine Opazität zu machen versuchen sein, auch bekannt als völlig schwarz:mit CSS undurchsichtigem Text in einem transparenten div außer Kraft setzt

<div style="opacity:0.6;background:#3cc;"> 
    <p style="background:#000;opacity:1">This text should be all black</p> 
</div> 

Ist das möglich, mit nur CSS zu tun?

Vielen Dank im Voraus

+0

+1 JabbR hat mich hierher gebracht. –

Antwort

3

Die untergeordneten Elemente erben die Deckkraft. Was Sie tun könnten, ist, die <p> außerhalb des undurchsichtigen div zu positionieren und einen negativen Rand festzulegen, um es darüber zu bewegen.

Ich bin oft auf dieses Problem gestoßen und habe es normalerweise so gelöst. Problem ist nur, wenn Sie dynamischen Inhalt haben und das div erweitert werden muss.

13

Der einfachste Weg ist es, den Hintergrund des übergeordneten div mit einer Undurchsichtigkeit/alpha stylen:

div { 
    background: #fff; /* for browsers that don't understand the following rgba rule */ 
    background-color: rgba(255,255,255,0.5); /* rgb, white, with alpha at 0.5 */ 
} 

Dies ist jedoch nicht kompatibel mit IE.

Für IE> = 7 Kompatibilität, könnten Sie verwenden:

div { 
    background-image: url('path/to/partially_transparent.png'); 
    background-position: 0 0; 
    background-repeat: repeat; 
} 

Ich erinnere daran, dass IE < 7 eine proprietäre Filteroption hat, aber ich fürchte, ich kann mich nicht erinnern, wie es funktioniert. Also habe ich jeden Versuch, es zu beschreiben/zu beschreiben, weggelassen. Wenn ich eine nützliche Referenz finden kann, werde ich sie später hinzufügen.

Wie von easwee vermerkt, wird die Deckkraft von enthaltenen Elementen geerbt, weshalb Sie sie nicht überschreiben können, und deshalb bevorzuge ich den Ansatz background-color/background-image.

+1

Deklarieren Sie immer einen Fallback ohne RGBa, wie in dem Artikel beschrieben, mit dem ich in meiner Antwort verlinkt bin. –

+0

@Marcel Korpel, ja, du hast recht (und bearbeitet mit Fallback). –

+0

@ricebowl: Nein, dies löst einen Fehler im IE 6/7 aus: http://css-tricks.com/ie-background-rgb-bug/ –

1

Besteht der Hintergrund aus einer Farbe? Wenn dies der Fall ist, können Sie auch RGBa verwenden, um eine transparente Hintergrundfarbe für div auszuwählen, die nicht von den untergeordneten Elementen geerbt wird. Lesen Sie RGBa Browser Support für weitere Informationen, eine Problemumgehung für IE und another solution.

Wenn der Hintergrund der div nicht solide ist, können Sie eine transparente PNG als Hintergrund verwenden. Denken Sie daran, AlphaImageLoader in IE6 (und 5.5) zu verwenden.

Verwandte Themen