Hayır, opacity
iç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
div
Arka 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 :before
veya CSS 3 ::before
sözde öğelerini kullanmaktır. :before
sözde eleman, IE sürüm 8'den itibaren desteklenirken, ::before
sö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-index
ve arka plan görüntüsü için bir negatif ayarlamanız gerekecektir .
Test durumları
JsFiddle'daki test senaryosuna bakın: