重置子元素的不透明度-Maple浏览器(Samsung TV App)


76

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

我需要将孩子的元素不透明度重置/设置为任意值。参考的浏览器为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>

看起来应该可以工作...
2012年

我可能必须为此创建一个单独的元素。让我知道你的
想法

Maple浏览器使用支持不透明度的Gecko引擎,因此它应该可以正常工作。你的加价是多少?
凯尔

Answers:


165

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

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/


感谢您的帮助,我需要为p中的TEXT设置颜色而不是背景...使您的代码适应背景:rgba(255,255,255,1); 我仍然有同样的问题。谢谢你的时间。
GibboK 2012年

啊,我会为你做一个新的小提琴。:)
凯尔(Kyle)2012年

1
更新了答案以将其用于颜色,并且必须删除父元素的不透明度。
凯尔2012年

它可以在桌面浏览器上很好地工作,但不能在Mepla上工作,我正在测试Samsung SmartTv 2012
GibboK

2
这是宇宙中最好的东西-在ff 33中为Linux Mint工作。
user1063287 2014年

6

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

此外,如果您不喜欢使用RGBA设置颜色,而是使用十六进制设置颜色,则可以使用一些解决方案。

以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%);
}

请参见如何使用更少的编译器将HEX颜色转换为rgba?


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.