2010-04-01 15 views
17
<style type="text/css"> 
div#foo { 
    background: #0000ff; 
    width: 200px; 
    height: 200px; 

    opacity: 0.30; 
    filter: alpha(opacity = 30); 
} 
div#foo>div { 
    color: black; 
    opacity:1; 
    filter: alpha(opacity = 100); 
} 
</style> 

<div id="foo"> 
    <div>Lorem</div> 
    <div>ipsum</div> 
    <div>dolor</div> 
</div> 

En el ejemplo anterior, la opacidad de div#foo es heredada por elementos secundarios, haciendo que el texto sea casi ilegible. Supongo que es incorrecto decir que es heredado, la opacidad se aplica al div principal y los hijos son parte de eso, por lo que intentar anularlo para los elementos secundarios no funciona porque técnicamente son opacos.Opacidad de CSS y elementos secundarios

Normalmente uso una imagen de fondo alpha png en tales casos, pero hoy me pregunto si hay una mejor manera de hacer que un fondo de un div se vuelva semitransparente sin afectar el contenido.

Respuesta

37

Puede usar rgba().

div#foo 
{ 
    background: rgba(0, 0, 255, 0.3); 
} 

para que funcione en los antiguos exploradores de Internet utilizar CSS PIE. Hay some limitations, pero se manejan de una manera compatible hacia atrás: el valor RGB se renderizará correctamente y la opacidad se ignorará.

+1

me escribió acerca de su uso de una manera compatible hacia atrás hace un tiempo: http://dorward.me.uk/www/css/alpha-colour/ – Quentin

+0

¡Gracias, aprendí algo! Lamentablemente, no parece funcionar en IE7. – Rob

+0

@David gracias por el útil enlace – Rob

5

Si utiliza la opacidad, tendría que ponerlos en DIV por separado y luego alinearlos juntos. La DIV de fondo tendría la opacidad más baja, y la DIV de primer plano tendría su contenido con 100% de opacidad.

+0

El color RGBA es bueno, pero si necesitas soportar IE8, utiliza este enfoque. Simplemente agregue un DIV completamente posicionado como el primer niño al DIV en cuestión con la configuración de opacidad necesaria (e imagen de fondo si se requiere mezcla alfa) – ricosrealm

7

La mejor manera es la creación png transparente a fondo ..

Cuestiones relacionadas