如何使用不透明文本获得半透明背景?

时间:2010-12-11 05:32:45

标签: html css css3

我正在尝试这种方法,我只是放了两个div,我设计了第一个添加背景并使其半透明的风格,我设计第一个以使其不透明:

这是代码:

<div id="container">
    <div id="opaquetext">
      This is a normal text
      on a translucent background
    </div>
</div>

和CSS:

   #container {
       background-color: #ffffff;  /* the background          */
       filter:alpha(opacity=50);   /* Internet Explorer       */
       -moz-opacity:0.5;           /* Mozilla 1.6 and below   */
       opacity: 0.5;               /* newer Mozilla and CSS-3 */
    }
    #opaquetext {
       filter:alpha(opacity=100);  /* discarded */
       -moz-opacity:1.0;           /* discarded */
       opacity: 1.0;               /* discarded */
    }

我认为它会起作用,但出于某种原因,它也会使文本透明化。

3 个答案:

答案 0 :(得分:3)

不透明度样式会影响整个元素的显示 - 包括背景和前景色。样式也乘以元素树。换句话说,您的内部div只是被设计为具有外部div的100%不透明度。 50%不透明度的100%表示它与父元素显示的透明度相同:50%。

有两种解决方法,两者都不需要两个div,这两种解决方法都允许您像往常一样为文本指定color: #000000

  • 使用透明背景图像
    IE在IE7

  • 之前不支持此功能
  • 使用background-color: rgba(255, 255, 255, 0.5)
    IE在IE9之前不支持这个,Firefox在3.5之前不支持这个

答案 1 :(得分:1)

使用rgba()而不是#...或rgb()指定背景,其中rgba中的最后一个参数表示背景的不透明度。不透明度用于定义整个元素的不透明度。例如:

background: rgba(255, 0, 0, 0.2)

有关此内容的更多信息:http://www.css3.info/preview/rgba/

但它可能会引发旧浏览器的兼容性问题,即。如果您想支持旧浏览器,您应该考虑使用boltclock的答案中指定的透明背景图像。

答案 2 :(得分:0)

不透明度继承是所有浏览器的标准行为。如果您希望子视图在不透明度上被继承,您有两种选择:

  1. 在#opaquetext的样式中使用绝对位置:

    #opaquetext {
        position: absolute;
        top: 10px;
        left: 10px;
        filter:alpha(opacity=100);  /* worked */
        -moz-opacity:1.0;           /* worked */
        opacity: 1.0;               /* worked */
    }
    
  2. 使用照片/图像软件制作具有所需不透明度的背景,并在css中删除不透明度设置。

  3. 参考: