web-dev-qa-db-ja.com

子要素の不透明度をリセットする-Maple Browser(Samsung TV App)

子要素を持つ透明な要素の作成に問題があります。このコードを使用して、子要素は親要素から不透明度の値を取得します。

子の要素の不透明度を任意の値にリセット/設定する必要があります。参照のブラウザは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>
68
GibboK

おそらくあなたが持っている問題(セレクターを見ることに基づく)は、不透明度が親のすべての子要素に影響することです:

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/

151
Kyle

カイルのソリューションは問題なく動作します。

さらに、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に変換する方法? を参照してください。

5

上記の回答はうまくいきますが、16進カラーコードを使用するのが好きな人は、16進色自体で透明度を設定できます。 EXP:#472d20b9-最後の2つの値は色の不透明度を設定し、#472d20は同じ色ですが不透明度はありません。注:ChromeとFirefoxでは正常に動作しますが、EdgeとIEは動作しません。他のブラウザでテストする機会はありませんでした。

0
Max