CSS における z-index: 0 と z-index: auto の違い

CSS における z-index: 0 と z-index: auto の違い

最近、スタック コンテキストについて学習しています。学習の過程で、z-index が 0 の場合と auto の場合の違いについて疑問があったので、Baidu で情報を調べました。いくつか問題点を見つけたので、自分の実践(実験?)に基づいてこのメモをまとめました。

訂正

情報を調べていたところ、z-index が 0 の場合、新しいスタック コンテキストが作成され、0 は auto より上になるという説があることに気付きました。文の後半部分は間違っています。z-index: 0 と z-index が設定されていない、つまり z-index: auto は、同じ階層内で高低の区別がありません。ドキュメント フローで後から表示されるものが、前に表示されるものを上書きします。

z-index: 0 または z-index: auto を設定すると、ドキュメント フロー内で後から表示される要素が、前に表示される要素を覆います。

実験してみましょう

<!DOCTYPE html>
<html>
<ヘッド>
  <title>z-index は 0 または auto です</title>
  <スタイル>
    。赤、
    。青{
      幅: 200ピクセル;
      高さ: 200px;
    }

    。赤 {
      位置: 絶対;
      zインデックス: 0;
      上: 100px;
      左: 100px;
      背景: #FF0000;
    }
    。青 {
      位置: 絶対;
      zインデックス: 自動;
      上: 40px;
      左: 40px;
      背景: #0000FF;
    }
  </スタイル>
</head>

<本文>
  <div class="red">
    インデックス-0
  </div>
  <div class="blue">インデックス自動</div>
</本文>
</html>

このコードの結果は次のようになります。

青い要素が赤い要素を覆っていることがわかります。ドキュメント内の赤い要素ブロックと青い要素ブロックの順序は次のように入れ替わります。

<div class="blue">インデックス自動</div>
<div class="red">
  インデックス-0
</div>

取得できる

このとき、赤い要素が再び青い要素を覆います。 z-index 値が 0 または auto の場合、スタック コンテキスト内の要素の順序には影響がないことがわかります。
さらに、MDN ドキュメントで次の文も見ました。

z-index が指定されていない場合、すべての要素はデフォルトのレイヤー (レイヤー 0) にレンダリングされます。

つまり、auto と 0 は同じレイヤー上にあります。
上記のコードの青いブロックの後に緑のブロックを追加しましょう。

<div class="green">Z-index を設定しないでください</div>
 
。緑 {
  位置: 絶対;
  上: 160px;
  左: 160px;
  背景: 緑黄色;
}

ページは次のようになります。

緑色には z-index 値が設定されていません。通常、ブラウザの位置が静的ではなく、z-index が設定されていない場合、z-index は自動になり、IE6/7 では z-index は 0 になります。
最後に表示される要素である緑は、青と赤の両方の要素をカバーします。

z-index: 0 はスタックコンテキストを作成します

ここで、z-index: 0 のため、赤い要素にスタック コンテキストがあることを確認しましょう。赤い要素にテスト要素を追加します

<div class="test"></div>
 
。テスト {
  幅: 140ピクセル;
  高さ: 140px;
  位置: 絶対;
  右: 0px;
  上: 0px;
  背景: グレー;
  zインデックス: 10;
}

現時点では、ページは次のようになります

灰色のテスト ブロックは、青と緑のブロックで覆われています。
当然ですが、テスト要素の z-index が 10 であっても、スタッキング コンテキストの上部に表示することはできません。 test は親要素 red によって作成されたスタック コンテキストに属しているためです。要素がスタッキング コンテキストを作成すると、その子スタッキング コンテキストの z-index 値は親のコンテキスト内でのみ意味を持ちます。灰色のブロックのすべての Z インデックスは、赤色のブロック内でのみ有効です。

z-index: auto はスタックコンテキストを作成しません

では、このテスト要素を青いブロックに入れて試してみてはいかがでしょうか? (青い要素のz-index値はautoです)

灰色の要素が全ての要素の上に表示されており、z-index値が有効になっていることがわかります。この時点で、テスト要素はルート要素によって作成されたスタッキング コンテキストに属します (スタッキング コンテキストの階層では、スタッキング コンテキストを作成しない要素は、親と同じスタッキング コンテキストにあります。青いブロックはスタッキング コンテキストを作成せず、親であるルート要素と同じスタッキング コンテキストにあります)。赤い要素もルート要素によって作成されたスタッキング コンテキストに属しますが、赤い要素の z インデックスは 0 で 10 未満であるため、灰色のブロックが一番上にあります。

要約する

  • z-index 値が設定されていない場合、デフォルトは auto になります。デフォルトのレイヤーはレイヤー 0 です。
  • 同じ階層内で、z-index: 0 と z-index が定義されていない (つまり z-index: auto) の間には違いはありません。ドキュメント フローで後から表示されるものが、前に表示されるものを覆います。
  • z-index: 0 はスタック コンテキストを作成します。z-index: auto はスタック コンテキストを作成しません。

CSSにおけるz-index: 0とz-index: autoの違いについての記事はこれで終わりです。z-index: 0とz-index: autoの違いについてさらに詳しく知りたい方は、123WORDPRESS.COMの過去記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

<<:  ウェブページが自動的にデュアルコアブラウザの高速モードを呼び出すようにします(Webkit)

>>:  ローカル画像サーバーのNginx構成の実装

推薦する

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

純粋なCSS3で実装されたネオンライト効果

達成される効果は次のとおりです。 マウスがボタン内に移動すると、ネオンライトのような効果が生成され、...

Iframe Web ページのナビゲーション ウィンドウに関する簡単な説明

Iframe Web ページのナビゲーション ウィンドウに関する簡単な説明 Iframe ウェブペー...

MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明

MySQL Binログデータの回復: 誤ってデータベースを削除した場合前書き: テスト マシンで誤っ...

モバイルレイアウトにvw+remを使用する方法

まだ rem フレキシブルレイアウトを使用していますか?圧縮された js コードの大きなセクションを...

最小限のルートファイルシステムを構築するためにbusyboxを移植するための詳細な手順

Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...

mysql5.7.19 解凍版の詳細なインストール チュートリアル (純粋なクラックされた中国語版 SQLYog を使用)

Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...

MySQL のレイテンシ問題とデータフラッシュ戦略プロセスの分析

目次1. MySQLレプリケーションプロセス2. MySQLの遅延問題の分析3. プロモーション期間...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

MySQL UPDATE ステートメントの非標準実装コード

今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステ...

LayUI+Shiroは動的なメニューを実装し、メニュー拡張の例を記憶します

目次1. Maven 依存関係2. メニュー関連クラス1. メインメニュー2. サブメニュー3. S...

Vue-CLI3.xはプロジェクトをサーバーに自動的にデプロイします

目次序文1. scp2をインストールする2. テスト/本番環境サーバーのSSHリモートログインアカウ...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

WeChatアプレットが計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

Nginxはhttpリクエスト実装プロセス分析を処理する

Nginxはまず、設定ファイル内のどのserver{}ブロックを処理に使用するかを決定します。次のs...