いいえ、opacity
コンテンツを含む要素全体に影響し、この動作を変更する方法がないため、これを行うことはできません。これは、次の2つの方法で回避できます。
二次div
div
コンテナに別の要素を追加して、背景を保持します。これは最もクロスブラウザに適した方法であり、IE6でも機能します。
HTML
<div class="myDiv">
<div class="bg"></div>
Hi there
</div>
CSS
.myDiv {
position: relative;
z-index: 1;
}
.myDiv .bg {
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: url(test.jpg) center center;
opacity: .4;
width: 100%;
height: 100%;
}
jsFiddleのテストケースを参照してください
:beforeおよび:: before疑似要素
もう1つのトリックは、CSS2.1:before
またはCSS3の::before
疑似要素を使用することです。:before
疑似要素はバージョン8以降のIEでサポートされていますが、::before
疑似要素はまったくサポートされていません。これは、バージョン10で修正されることを願っています。
HTML
<div class="myDiv">
Hi there
</div>
CSS
.myDiv {
position: relative;
z-index: 1;
}
.myDiv:before {
content: "";
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: url(test.jpg) center center;
opacity: .4;
}
その他の注意事項
の動作によりz-index
、コンテナのzインデックスz-index
と、背景画像のネガを設定する必要があります。
テストケース
jsFiddleのテストケースを参照してください。