78

我在创建具有子元素的透明元素时遇到问题。使用此代码,子元素从父元素获取不透明度值。

我需要将孩子的元素不透明度重置/设置为任意值。参考浏览器是Maple Browser (for a Samsung TV Application).

 .video-caption {
        position: absolute;
        top:50px;
        width: 180px;
        height: 55px;
        background-color: #000;
        -khtml-opacity:.40; 
        -moz-opacity:.40; 
        -ms-filter:"alpha(opacity=40)";
        filter:alpha(opacity=40);
        filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.4); /*just for testing*/
        opacity:.40; 
    }
    .video-caption > p {
        color: #fff !important;
        font-size: 18px;
        -khtml-opacity:1; 
        -moz-opacity:1; 
        -ms-filter:"alpha(opacity=100)";
        filter:alpha(opacity=100);
        filter: progid:DXImageTransform.Microsoft.Alpha(opacity=1);
        opacity:1; 
    }

编辑标记

<div> <img id="videothb-1" src="https://xxxxx/splash.jpg"> <div class="video-caption"> <p>Description here</p> </div> </div>
4

3 回答 3

169

您可能遇到的问题(基于查看您的选择器)是不透明度会影响父级的所有子元素:

div
{
    background: #000;
    opacity: .4;
    padding: 20px;
}

p
{
    background: #f00;
    opacity: 1;
}​

http://jsfiddle.net/Kyle_/TK8Lq/

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

div
{
    background: rgba(0, 0, 0, 0.4);
    /*opacity: .4;*/
    padding: 20px;
}

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

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


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

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

但是您必须在所有内容上使用 rgba 才能使其正常工作,您必须删除所有父元素的不透明度。

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

于 2012-11-22T09:05:10.280 回答
6

凯尔的解决方案效果很好。

此外,如果您不喜欢使用 RGBA 设置颜色,而是使用 HEX,也有解决方案。

以 LESS 为例,您可以使用如下的 mixin:

.transparentBackgroundColorMixin(@alpha,@color) {
  background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}

并像使用它一样

.myClass {
    .transparentBackgroundColorMixin(0.6,#FFFFFF);
}

实际上,这是内置的 LESS 函数也提供的:

.myClass {
    background-color: fade(#FFFFFF, 50%);
}

请参阅如何使用 Less 编译器将 HEX 颜色转换为 rgba?

于 2014-06-26T13:35:01.843 回答
1

上面的答案效果很好,但是对于喜欢使用十六进制颜色代码的人,您可以通过十六进制颜色本身设置透明度。EXP:#472d20b9 - 最后两个值设置颜色的不透明度,而 #472d20 将是​​相同的颜色但没有不透明度。注意:在 Chrome 和 Firefox 中运行良好,而 Edge 和 IE 则不行。没有机会在其他浏览器中测试它。

于 2018-02-13T22:44:07.837 回答