私の目標は、任意の背景を持つdivを作成することです。次に、疑似要素を使用して透明な白いオーバーレイを作成し、divの背景を「明るく」します。ただし、「オーバーレイ」はdivのコンテンツの下になければなりません。したがって、次の例では:
<div class="container">
<div class="content">
<h1>Hello, World</h1>
</div>
</div>
.container {
background-color: red;
width: 500px;
height: 500px;
position: relative;
}
.content {
background-color: blue;
width: 250px;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1;
background-color: rgba(255, 255, 255, .8);
}
.content
div
は、白いオーバーレイ(別名.container::before
)の「下」にあってはなりません。
z-index
で.content
を使用する必要はありませんが、それが唯一の解決策であれば可能です。
最終目標:テキストと青が覆われていない間、赤は覆われるべきです。
JSフィドル: http://jsfiddle.net/1c5j9n4x/
擬似要素にz-index
がある場合は、.content
要素を配置し、z-index
値を スタッキングコンテキストの確立 に追加する必要があります。
.content {
background-color: blue;
width: 250px;
position: relative;
z-index: 1;
}
..youcouldもz-index
を擬似要素から削除し、.content
要素を配置するだけです。その際、z-index
を必要とする要素はありません。これが機能する理由は、:before
疑似要素が本質的に以前の兄弟要素であるためです。したがって、後続の.content
要素は一番上に配置されます。
.content {
background-color: blue;
width: 250px;
position: relative;
}
.container::before {
content:"";
display: block;
height: 100%;
position: absolute;
top: 0;
left: 0;
width: 100%;
background-color: rgba(255, 255, 255, .8);
}