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構成の実装

推薦する

jQueryは、マウスをドラッグしてdivの位置とサイズを変更する方法を実装しています。

Windows フォームと同様の効果を得るには、中央をドラッグして div の位置を変更し、端をド...

VMware 仮想マシン ubuntu18.04 インストール チュートリアル

インストール手順1. 仮想マシンを作成する 2. [カスタム(詳細)]を選択し、[次へ]をクリックし...

Linux SSHポートを転送する3つの方法

ssh は私が最も頻繁に使用する 2 つのコマンドライン ツールのうちの 1 つです (もう 1 つ...

JS でオブジェクトを作成する 4 つの方法

目次1. リテラル値でオブジェクトを作成する2. 新しいキャラクターを使ってオブジェクトを作成する3...

JavaScript の高度なプログラミングの基本参照型

目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...

すべてのブラウザとの完全な互換性を実現するために最適なプリセットを選択してください

各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

webpackでvue環境を構築する際の異常なエラーを解決する

目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...

Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード

最近、cronスケジュールタスク用のdockerを作りたいと思っており、Dockerfileで次のよ...

表示しているページのスナップショットを Baidu が保存できないように設定する方法

今日、Baidu でページを検索したところ、ページが削除されていたため、当然 Baidu スナップシ...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

フォームの読み取り専用属性と無効な属性についての簡単な説明

フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...

vuexサードパーティパッケージを使用してデータの永続性を実装する方法

目的: vuex で管理されている状態データを同時にローカルに保存できるようにします。独自のストレー...

JavaScript プロトタイプオブジェクトの this ポイント問題の詳細な説明

目次1. これは2. この点を修正する1. call() メソッド2. apply() メソッド要約...

Vue2.x - アンチシェイクとスロットリングの使用例

目次ユーティリティ: vue での使用:説明する:画像安定化:スロットル:ユーティリティ: // 手...