子要素を持つ透明な要素の作成に問題があります。このコードを使用して、子要素は親要素から不透明度の値を取得します。
子の要素の不透明度を任意の値にリセット/設定する必要があります。参照のブラウザは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>
おそらくあなたが持っている問題(セレクターを見ることに基づく)は、不透明度が親のすべての子要素に影響することです:
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を使用する必要があり、すべての親要素の不透明度を削除する必要があります。
カイルのソリューションは問題なく動作します。
さらに、RGBAではなく、HEXを使用して色を設定したくない場合は、解決策があります。
LESS for exempleでは、次のようなミックスインを使用できます。
.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に変換する方法? を参照してください。
上記の回答はうまくいきますが、16進カラーコードを使用するのが好きな人は、16進色自体で透明度を設定できます。 EXP:#472d20b9-最後の2つの値は色の不透明度を設定し、#472d20は同じ色ですが不透明度はありません。注:ChromeとFirefoxでは正常に動作しますが、EdgeとIEは動作しません。他のブラウザでテストする機会はありませんでした。