2011-01-29 50 views

回答

0

简单的答案:这是不可能的。你需要重构你的标记。

编辑 - 你想要一个解释,你明白了。

CSS specs状态

< alphavalue>

在语法上一个<号>。穿过整个对象的统一不透明度设置将应用于。任何超出范围0.0(完全透明)到1.0(完全不透明)的值将被限制在此范围内。如果对象是一个容器元素,那么效果就好像容器元素的内容与当前背景混合使用掩码,其中掩码的每个像素的值为< alphavalue>。 。

这意味着,容器不透明度适用于其内容。

使用的变通办法颜色rgba不会影响图像,表单元素,滚动条等

因此,我建议标记的这样的调整:

<div style="position: relative"> 
    <div style="position: absolute; top: 0; left: 0; opacity: .5"> 
     <!-- semi-transparent content here --> 
    </div> 
    <div style="position: absolute; top: 0; left: 0;"> 
     <!-- fully opaque content here --> 
    </div> 
</div> 
+0

我倾向于投票,但我现在就离开它。你背后的推理是什么?你读过了@ BoltClock的帖子吗? –

+0

@Matti:猜猜他的意思是单独使用'opacity'属性是不可能的。 – BoltClock

+0

添加说明。 – user123444555621

2

你只能控制使用rgba()颜色表示法,您父母div的某些单个组件的Alpha。即使这样,对于rgba()浏览器支持比opacity支持稍差,你不能使用厂商扩展它:

#parent { 
    color: rgba(255, 255, 255, 0.5); 
    background-color: rgba(153, 0, 0, 0.5); 
} 

如果需要浏览器的支持,使用的颜色,而不是透明的PNG图片:

#parent { 
    color: rgba(255, 255, 255, 0.5); 
    background-image: url(bg.png); 
} 

不要设置opacity属性;否则你父母div中的所有内容的opacity将相对于此opacity,并且指定父母opacity: 0.5和子女opacity: 2.0也不起作用。

+0

如果它包含浏览器支持,我会给这个+1:] –

+0

@Carrie Kendall:它暗示在'background-color'旁边的注释中,但我只是将它扩展为代码。不支付懒惰;) – BoltClock

+0

您可以使用正常的十六进制颜色将背景颜色设置为灰色,然后设置rgba,这将为不支持的浏览器提供纯色。 –

相关问题