Hayır, opacityiçeriği dahil tüm öğeyi etkilediği için bu yapılamaz ve bu davranışı değiştirmenin bir yolu yoktur. Aşağıdaki iki yöntemle bu sorunu çözebilirsiniz.
İkincil div
divArka planı tutmak için kaba başka bir öğe ekleyin . Bu, tarayıcılar arası en uyumlu yöntemdir ve IE6'da bile çalışacaktır.
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'daki test senaryosuna bakın
: önce ve :: sözde elemandan önce
Diğer bir numara da CSS 2.1 :beforeveya CSS 3 ::beforesözde öğelerini kullanmaktır. :beforesözde eleman, IE sürüm 8'den itibaren desteklenirken, ::beforesözde eleman hiç desteklenmez. Bu, umarız sürüm 10'da düzeltilecektir.
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;
}
Ek Notlar
Davranışınız nedeniyle z-index, kap için bir z-endeksi z-indexve arka plan görüntüsü için bir negatif ayarlamanız gerekecektir .
Test durumları
JsFiddle'daki test senaryosuna bakın: