CSS不透明度和子元素

Rob*_*Rob 17 css transparency background alpha-transparency

<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>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,不透明度div#foo由子元素继承,导致文本几乎不可读.我认为说它是继承的是错误的,不透明度应用于父div而子节点是其中的一部分,因此尝试为子元素覆盖它不起作用,因为从技术上讲它们是不透明的.

在这种情况下,我通常只使用alpha png背景图像,但今天我想知道是否有更好的方法来使div的背景半透明而不影响内容.

fux*_*xia 37

你可以使用rgba().

div#foo
{
    background: rgba(0, 0, 255, 0.3);
}
Run Code Online (Sandbox Code Playgroud)

要使它在旧的Internet Explorer中工作,请使用CSS PIE.存在一些限制,但这些限制是以向后兼容的方式处理的:RGB值将正确呈现并且不透明度将被忽略.


yas*_*ink 7

最好的方法是将透明png设置为背景..


Sha*_*ard 5

如果使用不透明度,则必须将它们放在单独的DIV中,然后将它们排成一行.背景DIV的不透明度较低,前景DIV的内容为100%不透明度.