私はこのコードを持っています
#mtitle {
display: inline-block;
margin: 0;
background-color: #000000;
z-index: 999;
}
#tsub {
display: inline-block;
margin-left: 0;
left: 0;
position: absolute;
font-size: 85px;
z-index: 0;
}
<header>
<h1 id="mtitle">Tepid Beans</h1>
<div id="tsub"><span>- Games</span>
</div>
</header>
#tsub
が#mtitle
の上に表示されていますが、その理由はわかりません。
z-index
は配置された要素で機能しますが、 flex items または grid items のCSS3要素では、要素が静的な場合にz-index
を使用できます
From [〜#〜] mdn [〜#〜]
z-index
プロパティは、要素とその子孫のz次数を指定します。要素が重なると、zオーダーによってどちらが他方をカバーするかが決まります。z-index
が大きい要素は、通常、小さい要素をカバーします。配置されたボックスの場合、
z-index
プロパティは次を指定します。
現在のスタッキングコンテキストでのボックスのスタックレベル。
ボックスがローカルスタッキングコンテキストを確立するかどうか。
適用対象配置された要素
position:relative
を親header
に、position:absolute
を#mtitle
に設定し、z-index
値を変更します
body {
margin: 0
}
header {
position: relative
}
#mtitle {
display: inline-block;
background-color: #000000;
position: absolute;
margin:0;
z-index: 0;
color: #fff
}
#tsub {
display: inline-block;
left: 0;
position: absolute;
font-size: 85px;
z-index: -1;
background: red
}
<header>
<h1 id="mtitle">Tepid Beans</h1>
<div id="tsub">- Games</div>
</header>
ここに投稿された他の回答は問題を解決しますが、それらは完全に正しいわけではありません。
次の記述は誤りです。
z-index
は配置された要素でのみ機能します。z-index
は、配置されている要素に対してのみ機能します。z-index
は、position:static
以外の要素、つまりデフォルトの位置でのみ機能します。
多くの場合、z-index
が機能するためには要素を配置する必要があります。しかし、これはすべての場合に当てはまるわけではありません。
flex items または grid itemsposition
がstatic
( デモを参照 )の場合でも、z-index
を使用してスタッキングコンテキストを作成できます。
この特定の質問に関して、#tsub
が#mtitle
の上に表示される理由は、次の理由によるものです。
div#tsub
は、HTMLではh1#mtitle
の後にあり、かつz-index
が配置されておらず、フレックスまたはグリッドアイテムでもないため、#mtitle
に適用された#mtitle
プロパティは無視されます。考えられる解決策は次の2つです。
z-index: 0
の#tsub
をz-index: -1
に変更するか、またはposition: relative
を#mtitle
に追加します#mtitle {
display: inline-block;
margin: 0;
background-color: aqua; /* changed for illustration purposes */
z-index: 999;
}
#tsub {
display: inline-block;
margin-left: 0;
left: 0;
position: absolute;
font-size: 85px;
z-index: -1; /* adjustment here */
}
<header>
<h1 id="mtitle">Tepid Beans</h1>
<div id="tsub"><span>- Games</span>
</div>
</header>
z-indexは、配置されている要素に対してのみ機能します。したがって、position: relative;
を#mtitle
に追加すると、zインデックスが機能します。
あなたの質問の最後の部分に関して、
#mtitleの上にtsubが表示されていますが、その理由はわかりません。
position: absolute
を持つ要素は、要素の通常のフローから「取り出され」、親要素のスペースを占有しません(これを機能させるには、static
以外の位置設定が必要です)。 、それらはそれらに固定されているだけです(=それらと一緒に移動します)。しかし、そうすれば、他の要素と重複する可能性があります。
いくつかの絶対的に配置された要素の中で、z-indexはどれが別の要素の上にあるかを決定します。