2012-05-02 10 views
490

私は、次のコードに似た何かを使用しています:私は、これは背景が0.4の不透明度は100%の不透明度を持っているテキストを持っていることが期待CSSの背景の不透明度

<div style="opacity:0.4; background-image:url(...);"> 
<div style="opacity:1.0;"> 
    Text 
</div> 
</div> 

を。代わりに、両方とも0.4の不透明度を持ちます。

答えて

870

子供は不透明を継承します。彼らがしなければ、それは不思議で不便かもしれません。

背景画像に半透明のPNGを使用することも、背景色にRGBa(アルファ用)を使用することもできます。

例は、50%が黒の背景を色あせ:

<div style="background-color:rgba(0, 0, 0, 0.5);"> 
 
    <div> 
 
     Text added. 
 
    </div> 
 
</div>

+9

、より詳細なチュートリアルでは、ここで見つけることができます:http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and -filters/ –

+8

アルファを別のCSSルールで設定することはできますか? – jayarjo

+3

いいえ、それは色の値の単一のチャンネルであり、色の値はCSSの規則に割り当てられます。 – AlienWebguy

3

内側のdivは、40%の不透明度を有し、それが(にネストされたDIVの不透明度が100%を持っているからです)。

これを回避するために、あなたができることがいくつかあります。あなたはそのような二つの別々のdiv作成することができ

<div id="background"></div> 
<div id="bContent"></div> 

は敬遠しがち背景で、ご希望のCSSの不透明度およびその他のプロパティを設定し、スタイルや位置にbContent div要素をZ-indexプロパティ(z-index)を利用します。これで、背景のdivのdivオーバートープを置くことができます。


もう1つのオプションはRGBaです。これにより、divをネストし、div固有の不透明度を達成することができます。


最後のオプションは、単にあなたが選択のあなたの目的の画像エディタで希望の色の半透明の.pngイメージを作ることである、「画像のURLに背景画像のプロパティを設定し、その後、あなたは勝ちましたcssについて心配したり、ネストされたdiv構造の機能と構成を失ったりする心配がありません。

20

この

<div class="container"> 
    <div class="text"> 
    <p>text yay!</p> 
    </div> 
</div> 

CSSのように私は何かをするだろう:

.container { 
    position: relative; 
} 

.container::before { 
    position: absolute; 
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0; 
    background: url('/path/to/image.png'); 
    opacity: .4; 
    content: ""; 
    z-index: -1; 
} 

が動作するはずです。これは半透明のイメージbtwを必要としていて、カラーではないことを前提としています(これはrgbaを使うべきです)。また、Photoshopであらかじめ画像の不透明度を変更することはできません。

+0

#bgdにz-index:-1を設定する必要がありますか?そうでなければ、全体が透明になります。 – windmaomao

+0

は 'z-index'ではなく、' bgd' div要素が 'text'要素の前にある必要があります。 –

115

CSS 3 :beforeを使用すると、半透明の背景を持つことができます。これは、1つのコンテナで行うことができます。http://codepen.io/anon/pen/avdsi

注:あなたがz-index値を調整する必要があるかもしれませんそして、

article { 
    position: relative; 
    z-index: 1; 
} 

article::before { 
    content: ""; 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    opacity: .4; 
    z-index: -1; 
    background: url(path/to/your/image); 
} 

サンプルいくつかのCSSを適用し、この

<article> 
    Text. 
</article> 

のようなものを使用してください。

+0

実際には新しいブラウザとIE 9以降で動作します。ここをクリックしてください。[example](http://codepen.io/anon/pen/alfLj) – daniels

+7

イメージと背景色の両方で動作するため、このソリューションはrgbaのものよりも好きです。 – BillyTom

+4

受け入れられる答えは正しいが、この創造的な解決策はOPに直接的に答える。半透明のpng/gif/etcになるように背景画像を編集することはさらに正確です。不透明度は、レンダリングするために少し多くのジュースを必要とします。 – Patrick

37

次の方法は、あなたの問題

  1. CSS Aplha透明性方法(IE 8では動作しません)

    #div{background-color:rgba(255,0,0,0.5);} 
    
  2. あなたに応じて透過PNG画像を使用することを解決するために使用することができます背景としての選択。

  3. 次のCSSコードスニペットを使用して、クロスブラウザのアルファ透明な背景を作成します。ここでは、オンラインでのCSSジェネレータを持っている。この技術に関する詳細については

    .div { 
        background:rgb(0,0,0); 
        background: transparent\9; 
        background:rgba(0,0,0,0.4); 
        filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000,endColorstr=#66000000); 
        zoom: 1; 
    }  
    .div:nth-child(n) { 
        filter: none; 
    } 
    

#000000 0.4 @%の不透明度、thisを参照してください、との例があります。

+1

私は、新しいブラウザではなく、ブラウザのソリューションです。感謝! – Nashe

+0

cssタグは 'background-color'と呼ばれ、' background'ではありません – Wilt

+3

@Wilt CSSルールbackground-colorはバックグラウンドの下位です。境界、マージン、およびパディングと同様に、すべての背景サブグラフは、別々の代わりに1行で背景の内側に設定できます。このインスタンスのバックグラウンドを使用することはあなたが望むものなので、他のバックグラウンドサブルールを上書きすることができます。 –

4
.transbg{/* Fallback for web browsers that don't support RGBa */ 
background-color: rgb(0, 0, 0); 
/* RGBa with 0.6 opacity */ 
background-color: rgba(0, 0, 0, 0.6); 
/* For IE 5.5 - 7*/ 
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); 
/* For IE 8*/ 
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";} 
2

ちょうど背景と同じフォアグラウンドに幅と高さを置くか、上、下、左と右の特性を有するようにしようとしていることを確認してください。

<style> 
    .foreground, .background { 
     position: absolute; 
    } 
    .foreground { 
     z-index: 1; 
    } 
    .background { 
     background-image: url(your/image/here.jpg); 
     opacity: 0.4; 
    } 
</style> 

<div class="foreground"></div> 
<div class="background"></div>