だから私がz-index
正しく理解していれば、この状況では完璧です:
下の画像(タグ/カード)を、その上のdivの下に配置します。したがって、鋭いエッジは見えません。どうすればよいですか?
z-index:-1 // on the image tag/card
または
z-index:100 // on the div above
どちらも機能しません。また、このような組み合わせもありません。どうして?
だから私がz-index
正しく理解していれば、この状況では完璧です:
下の画像(タグ/カード)を、その上のdivの下に配置します。したがって、鋭いエッジは見えません。どうすればよいですか?
z-index:-1 // on the image tag/card
または
z-index:100 // on the div above
どちらも機能しません。また、このような組み合わせもありません。どうして?
回答:
z-index
プロパティは、のみを持つ要素上で動作position
以外の値static
(例えばposition: absolute;
、position: relative;
またはposition: fixed
)。
またposition: sticky;
、Firefoxでサポートされ、Safariでプレフィックスが付けられ、以前のバージョンのChromeではカスタムフラグの下で機能し、MicrosoftがEdgeブラウザーに追加することを検討中です。
重要
通常の配置のposition: relative
場合は、も設定する要素に含めるようにしてくださいz-index
。そうしないと、有効になりません。
position: relative
、要素がデフォルトで他の相対的な方法で動作しているにもかかわらず、z-indexが機能するように明示的に指定する必要があります
static
要素は静的で、内を移動できませんx, y or z planes
。私たちと一緒に仕事をしているとき、彼らは引っ越しx plane (left or right)
たり、y plane (top or bottom)
好きになったりできませんposition: absolute
。そして、彼らは移動することもできませんz plane i.e. with z-index
。
z-index
グリッド要素での使用に関する問題を認識していますか?
位置を以外の値に設定してもstatic
、要素z-index
が機能しない場合は、親要素がz-index
設定している可能性があります。
スタッキングコンテキストには階層があり、各スタッキングコンテキストは親のスタッキングコンテキストのスタッキング順に考慮されます。
したがって、次のhtml
div { border: 2px solid #000; width: 100px; height: 30px; margin: 10px; position: relative; background-color: #FFF; }
#el3 { background-color: #F0F; width: 100px; height: 60px; top: -50px; }
<div id="el1" style="z-index: 5"></div>
<div id="el2" style="z-index: 3">
<div id="el3" style="z-index: 8"></div>
</div>
ノーどのように大きな問題ではz-index
でel3
設定されます、それは常に下になりel1
、それの親が低くスタッキングコンテキストを持っているので。積み重ね順序は、積み重ね順序el3
が実際には3.8である5未満のレベルと考えることができます。
親要素のスタックコンテキストを確認する場合は、次のように使用できます。
var el = document.getElementById("#yourElement"); // or use $0 in chrome;
do {
var styles = window.getComputedStyle(el);
console.log(styles.zIndex, el);
} while(el.parentElement && (el = el.parentElement));
多くの場合、要素は機能するように配置する必要がありますz-index
。
実際、position: relative
質問の要素に適用すると問題が解決する可能性があります(ただし、確実に知るのに十分なコードが提供されていません)。
実際には、position: fixed
、position: absolute
とposition: sticky
も可能になりますz-index
が、これらの値は、レイアウトを変更します。position: relative
レイアウト乱されることはありません。
基本的に、要素が配置されていない限りposition: static
(デフォルト設定)、配置されていると見なされ、z-index
機能します。
「Z-indexが機能しないのはなぜですか?」に対する多くの回答 質問は、配置された要素でz-index
のみ機能すると主張します。CSS3以降、これは当てはまりません。
ある要素フレックス項目またはグリッドのアイテムを使用することができz-index
たとしてもposition
ですstatic
。
スペックから:
フレックスアイテムは、生文書順の代わりに使用されるため、変更された文書の順序を除いて、正確に、インラインブロックと同じペイント、および
z-index
以外の値auto
としてもスタッキングコンテキストを作成しposition
ていますstatic
。グリッド項目の塗装順序は正確生文書順の代わりに使用されるため、変更された文書の順序を除いて、インラインブロックと同じであり、そして
z-index
以外の値auto
としてもスタッキングコンテキストを作成しposition
ていますstatic
。
以下は、z-index
配置されていないフレックスアイテムでの作業のデモンストレーションです。https://jsfiddle.net/m0wddwxs/
position: static
ためposition: relative
、フレックスとグリッドのアイテムを扱うのとまったく同じように扱うと述べています。したがって、要素を配置する必要があることはCSS3ではもはや当てはまらないとは言えませんが、CSS3はフレックス項目とグリッド項目を配置されているかのように扱います。たぶん、同じものを見る方法はたった2つです。
position:relative
。絶対位置を持つフレックスアイテムの子孫は、フレックスアイテムが配置されていないため、フレックスアイテムを包含ブロックと見なしません。(jsfiddle.net/0yo7utfL/2)
Stacking Context
。