是否可能有一个不透明的背景层,不会使其孩子浑浊?

时间:2009-10-14 10:26:03

标签: css xhtml opacity

我要说这段代码:

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Layers Opacity</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta name="robots" content="index,follow" />
        <style type="text/css">
            div#container
            {
                background-color: black;
                width: 200px;
                height: 400px;
                padding-top: 50px;
                            opacity: 0.5;
            }

            ul#menu
            {
                background-color: red;
                width: 150px;
                margin: 0 auto;
                            opacity: 1;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <ul id="menu">
                <li><a href="#"></a>Menu 1</li>
                <li><a href="#"></a>Menu 2</li>
                <li><a href="#"></a>Menu 3</li>
                <li><a href="#"></a>Menu 4</li>
                <li><a href="#"></a>Menu 5</li>
            </ul>
        </div>
    </body>
</html>

我想把我的“#menu”全彩色,红色。 我试图通过将不透明度设置为1来删除继承,但它不起作用。 我做错了吗?或者通过这种方式是不可能的?

我可以在我的菜单之外做一个图层,然后用z-index将它放在背景中,但是我在纯css中看起来很方便,而不是修改我的xhtml。

由于

4 个答案:

答案 0 :(得分:3)

不。将菜单放在容器外面将是正常的修复;如果你不能改变标记,另一种方法是完全避免不透明,而是使用半透明的PNG作为容器背景(如果需要,可以使用适当的AlphaImageLoader修复IE6。)

答案 1 :(得分:3)

由于您只是尝试更改元素的背景,因此可以在支持浏览器时使用rgba颜色(CSS 3)。大多数不支持它的浏览器都可以处理半透明的PNG。

请参阅(明确的自我推销)CSS 3: RGBA today以获得更全面的解释和一些示例代码。

答案 2 :(得分:1)

来自specification

  

如果对象是容器元素,   然后效果好像是内容   将容器元件混合   使用a来反对当前的背景   掩码每个像素的值   面具是。

由于您的菜单是容器的内容,因此它也会应用容器不透明度。您唯一的选择是应用一种解决方法,使您的菜单在技术上不包含在div中。 This article也描述了这种方法。

答案 3 :(得分:0)

我会使用透明的png作为现代浏览器的背景图像和IE6中的过滤器,如本文所述:Cross Browser Background Transparency With CSS