Basit bir yarı saydam arka plan rengi için yukarıdaki çözümler (CSS3 veya bg görüntüleri) en iyi seçeneklerdir. Bununla birlikte, meraklı bir şey yapmak istiyorsanız (örn. Animasyon, çoklu arka planlar vb.) Veya CSS3'e güvenmek istemiyorsanız, “bölme tekniği” ni deneyebilirsiniz:
.pane, .pane > .back, .pane > .cont { display: block; }
.pane {
position: relative;
}
.pane > .back {
position: absolute;
width: 100%; height: 100%;
top: auto; bottom: auto; left: auto; right: auto;
}
.pane > .cont {
position: relative;
z-index: 10;
}
<p class="pane">
<span class="back" style="background-color: green; opacity: 0.6;"></span>
<span class="cont" style="color: white;">Hello world</span>
</p>
Teknik, dış panel elemanının içinde iki “katman” kullanarak çalışır:
- içerik akışını etkilemeden bölme öğesinin boyutuna uyan bir ("arka"),
- ve içeriği içeren ve bölmenin boyutunun belirlenmesine yardımcı olan bir ("devam").
Açık position: relative
bölmesi önemlidir; katmana bölmenin boyutuna sığmasını söyler. (Eğer gerekiyorsa <p>
mutlak olması etiketi, bir panelinden değiştirmek <p>
bir etmek <span>
ve tüm sarın bir kesinlikle konumlu bu <p>
etiketi.)
Bu tekniğin yukarıda listelenenlere göre ana avantajı, bölmenin belirli bir boyutta olması gerekmemesidir; yukarıda kodlandığı gibi, tam genişliğe (normal blok elemanı düzeni) ve yalnızca içerik kadar yüksek olacaktır. Dış bölme elemanı, dikdörtgen olduğu sürece istediğiniz şekilde boyutlandırılabilir (yani satır içi blok çalışır; düz eski satır içi çalışmaz).
Ayrıca, arka plan için size çok fazla özgürlük verir; arka öğeye gerçekten herhangi bir şey koymakta özgürsünüz ve içerik akışını etkilememesini sağlar (birden fazla tam boyutlu alt katman istiyorsanız, sadece konumlarının da olduğundan emin olun: mutlak, genişlik / yükseklik:% 100, ve üst / alt / sol / sağ: otomatik).
Arka plan ek ayarına (üst / alt / sol / sağ yoluyla) ve / veya arka plan sabitlemeye (sol / sağ veya üst / alt çiftlerinden birini kaldırarak) izin vermek için bir varyasyon, aşağıdaki CSS'yi kullanmaktır:
.pane > .back {
position: absolute;
width: auto; height: auto;
top: 0px; bottom: 0px; left: 0px; right: 0px;
}
Yazıldığı gibi, bu Firefox, Safari, Chrome, IE8 + ve Opera'da çalışır, ancak IE7 ve IE6 ekstra CSS ve ifadeler, IIRC gerektirir ve son kontrol ettiğimde ikinci CSS varyasyonu Opera'da çalışmaz.
Dikkat edilmesi gerekenler:
- Devam eden katmanın içindeki yüzer elemanlar bulunmayacaktır. Temizlendiğinden veya başka bir şekilde içerildiğinden emin olmanız gerekir, aksi takdirde alttan dışarı kayarlar.
- Kenar boşlukları bölme elemanına, dolgu ise devam elemanına gider. Tersini kullanmayın (devam eden kenar boşlukları veya bölmedeki dolgu) veya sayfa tarayıcı penceresinden her zaman biraz daha geniş olan tuhaflıkları keşfedeceksiniz.
- Belirtildiği gibi, her şeyin blok veya satır içi blok olması gerekir. CSS'nizi basitleştirmek için
<div>
s yerine <span>
s kullanmaktan çekinmeyin .
Bu tekniğin esnekliğini, display: inline-block
hem auto
& hem de belirli width
s / s'lerle birlikte kullanarak gösteren daha dolu bir demo min-height
:
.pane, .pane > .back, .pane > .cont { display: block; }
.pane {
position: relative;
width: 175px; min-height: 100px;
margin: 8px;
}
.pane > .back {
position: absolute; z-index: 1;
width: auto; height: auto;
top: 8px; bottom: 8px; left: 8px; right: 8px;
}
.pane > .cont {
position: relative; z-index: 10;
}
.debug_red { background: rgba(255, 0, 0, 0.5); border: 1px solid rgba(255, 0, 0, 0.75); }
.debug_green { background: rgba(0, 255, 0, 0.5); border: 1px solid rgba(0, 255, 0, 0.75); }
.debug_blue { background: rgba(0, 0, 255, 0.5); border: 1px solid rgba(0, 0, 255, 0.75); }
<p class="pane debug_blue" style="float: left;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
<p class="pane debug_blue" style="float: left; display: inline-block; width: auto; min-height: auto;">
<span class="back debug_green"></span>
<span class="cont debug_red">
Pane content.<br/>
Pane content.
</span>
</p>
Ve burada yaygın olarak kullanılan tekniğin canlı bir demosu :