如何取消子div的不透明度?

时间:2013-11-11 14:22:50

标签: html css css3 opacity

我在这里有一个带按钮的div:

Menu with semi-opaque button

我希望div的内容不透明,同时仍然保持半透明的背景颜色。

该框将包含一个菜单。

#calculationMenu {
text-align: center;
margin-left: auto;
margin-right: auto;
border: 1px solid #1F5899 ;
height: 200px;
width: 400px; 
padding: 20px;
opacity:0.4;
background-color: #6AA6D9;

}
div.calcMenuContents {
opacity: 1;
}

“运行”按钮包含在calcMenuContents div中:

<div id="calculationMenu">
<div id="calcMenuContents">

    <button onclick="runCalculations(2)" class="insideMenu">Run</button> 

</div>
</div>

我如何才能使calcMenuContents不是半透明的?

更新:谢谢BoltClock的替代解决方案(设置div的特定属性,而不是整个div)。 我唯一的问题是父母

Fixed menu

4 个答案:

答案 0 :(得分:3)

有一个解决方案!使用rgba背景值,您可以在任何地方拥有透明度:

#calculationMenu
{
    background: rgba(0, 0, 0, 0.4);
    /*opacity: 0.4;*/
    padding: 20px;
}

div.calcMenuContents
{
    background: rgba(255, 0, 0, 1);
    /*opacity: 1;*/
}​

http://jsfiddle.net/Kyle_Sevenoaks/TK8Lq/1/


对于文本,您可以使用相同的rgba代码,但设置为CSS的color属性:

color: rgba(255, 255, 255, 1);

但是你必须在所有东西上使用rgba才能使用它,你必须删除所有父元素的不透明度。

http://jsfiddle.net/Kyle_Sevenoaks/TK8Lq/2/

使用rgba()

答案 1 :(得分:2)

您无法真正取消父元素的不透明度,但如果父元素中仅半透明的部分是其背景及其边框,则可以使用rgba()值替换其十六进制颜色基于您提供的不透明度,并完全删除opacity声明:

#calculationMenu {
text-align: center;
margin-left: auto;
margin-right: auto;
border: 1px solid rgba(31, 88, 153, 0.4);
height: 200px;
width: 400px; 
padding: 20px;
background-color: rgba(106, 166, 217, 0.4);
}

答案 2 :(得分:2)

您可以将背景颜色更改为RGBA,这样您就可以获得:

background-color: rgba(106, 166, 217, 0.4);

如果我正确

答案 3 :(得分:2)

您无法更改子元素的不透明度。尝试使用半透明的.png图像作为“calculationMenu”div的背景,而不是纯色背景和不透明度。

相关问题