在處理任務時,我必須在可滾動面板的頂部有一個固定位置的工具欄,我偶然發現了CSS屬性「opacity」的這種古怪(?)行爲, 。CSS屬性「不透明」的古怪行爲
這simplistic fiddle是自explainatory,但總結: 如果你有兩個div,一個是固定的定位和背後的另一個滾動固定一個,然後在滾動半透明的內容(不透明度< 1)(?) div顯示在固定div上。 固定格的不透明度在這裏並不重要。
雖然問題消失,如果我給固定div指定大於可滾動div的z-index(請參閱this fiddle),但我仍然很想知道爲什麼opacity屬性在這種情況下以直觀的方式表現出來。
有人可以解釋一下嗎?
順便說一句,該行爲在Chrome瀏覽器35,FF 30和IE 10
一致這裏複製從的jsfiddle代碼 - 因爲它是常態。
CSS
.fixedOpaqueDiv {
position: fixed;
background-color: #ABABAB;
width: 100%;
height: auto;
text-align: center;
font-size: 20px;
color: #DDDDDD;
padding-top: 5px;
opacity: 1;
}
.scrollingDiv {
padding-top: 140px;
text-align: center;
color: blue;
font-weight: bold;
}
.opaque {
opacity: 1;
}
.translucent {
opacity: 0.5;
}
HTML
<div style="height: 300px; overflow: auto;">
<div class="fixedOpaqueDiv">I am a div with fixed position,
<BR>with same z-index as the div below.
<BR>I am supposed to be Opaque, but
<BR>apparently I am opaque ONLY to the opaque divs below,
<BR>and not to the translucent ones</div>
<div class="scrollingDiv">
<div class="translucent" style="color: red; padding: 5px;">^^^^^^^^ Scroll up ^^^^^^^^</div>
<div class="opaque">Opaque 1</div>
<div class="translucent">Translucent 1</div>
<div class="opaque">Opaque 2</div>
<div class="translucent">Translucent 2</div>
<div class="opaque">Opaque 3</div>
<div class="translucent">Translucent 3</div>
<div class="opaque">Opaque 4</div>
<div class="translucent">Translucent 4</div>
<div class="opaque">Opaque 5</div>
<div class="translucent">Translucent 5</div>
<div class="opaque">Opaque 6</div>
<div class="translucent">Translucent 6</div>
<div class="opaque">Opaque 7</div>
<div class="translucent">Translucent 7</div>
<div class="opaque">Opaque 8</div>
<div class="translucent">Translucent 8</div>
</div>
</div>
當然,有一個有趣的效果,但有兩個重疊的元素具有相同的z-index,當你在同一個地方有兩個平面時,就會以與3D圖形非常相似的方式詢問不可預知的行爲。 –
同意。這兩個DIV都具有相同的Z-索引,因爲我沒有明確地將它們分配給它們中的任何一個。這一切都運行良好,因爲我在滾動面板中沒有任何半透明的內容,問題僅在有人看到可滾動面板後才顯示出來,並且一些半透明的內容進入。理想情況下,問題應該從一開始就表現出來。 – Alphonso