代码之家  ›  专栏  ›  技术社区  ›  Rob

css不透明度和子元素

  •  17
  • Rob  · 技术社区  · 14 年前
    <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>
    

    在上面的例子中,不透明度 div#foo 由子元素继承,导致文本几乎无法读取。我认为说它是继承的是错误的,不透明性应用于父div,子div是其中的一部分,所以试图为子元素重写它是不可行的,因为从技术上讲它们是不透明的。

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

    3 回复  |  直到 11 年前
        1
  •  37
  •   fuxia    11 年前

    您可以使用 rgba() .

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

    使它在旧的网络探险家使用 CSS PIE . 有 some limitations ,但这些是以向后兼容的方式处理的:rgb值将正确呈现,不透明度将被忽略。

        2
  •  7
  •   yasink    14 年前

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

        3
  •  5
  •   Shawn Steward    14 年前

    如果你使用不透明度,你必须把它们放在单独的div,然后把它们排在一起。背景div将具有较低的不透明度,前景div将具有100%不透明度的内容。