最近、プロジェクトの過程で問題に遭遇しました。メニューバーを常に上部に表示し、後続の要素をその下に表示されるようにしたいのですが、その時はz-indexの設定がうまくいきませんでした。原因がわからなかったので、CSSスタッキングに関する情報を見つけてこの問題を解決しました。ここに記録があります〜 画面は 2 次元の平面ですが、HTML 要素は 3 次元の座標系に配置されます。x は水平位置、y は垂直位置、z は画面の内側から外側への位置です。画面を見るときは、z 軸に沿って外側から内側に見ます。そのため、ユーザーの観点からは、要素は積み重ね関係を形成します。要素は他の要素を覆ったり、他の要素に覆われたりすることがあります。 重要な概念をいくつか挙げます。スタッキングコンテキスト(スタッキングコンテキスト)、スタッキングレベル(スタッキングレベル)、スタッキング順序(スタッキング順序)、 Zインデックス 声明:
1. スタックコンテキスト スタッキング コンテキストは、HTML における 3 次元の概念です。 CSS2.1 仕様では、各要素の位置は 3 次元です。要素が積み重ねられると、他の要素を覆ったり、他の要素に覆われたりすることがあります。Z 軸上の位置が高いほど、画面の観察者に近くなります。 記事「Z-index についてあなたが知らなかったこと」には良い例え話が載っているので、ここで引用します。 たくさんのアイテムが置かれたテーブルを想像してください。このテーブルは積み重ねコンテキストを表します。最初のテーブルの隣に 2 番目のテーブルがある場合、その 2 番目のテーブルは別のスタッキング コンテキストを表します。 ここで、最初のテーブルの上に 4 つの小さな立方体があり、それらはすべてテーブルの上に直接置かれていると想像してください。これら 4 つの小さな四角形の上にはガラスが置かれており、そのガラスの上にはフルーツの皿が置かれています。これらのブロック、ガラス片、フルーツ皿はそれぞれ、積み重ねコンテキスト (テーブル) 内の異なる積み重ねレベルを表します。 すべての Web ページにはデフォルトのスタック コンテキストがあります。このスタッキング コンテキスト (テーブル) のルートは 配置された要素に スタッキング コンテキスト 1 は、ドキュメント ルート要素によって形成されます。スタッキング コンテキスト 2 と 3 は、スタッキング コンテキスト 1 上のスタッキング レベルです。また、それぞれが新しいスタッキング レベルを含む新しいスタッキング コンテキストを形成します。 スタッキング コンテキスト内では、その子要素は上記で説明したルールに従ってスタックされます。スタッキング コンテキストを形成する方法は次のとおりです。
要約: スタッキング コンテキストは他のスタッキング コンテキスト内に含めることができ、一緒にスタッキング コンテキストの階層を形成します。 各スタッキング コンテキストは、その兄弟要素から完全に独立しています。スタッキングを処理するときは、子要素のみが考慮されます。これは BFC に似ています。 各スタッキング コンテキストは自己完結型です。要素のコンテンツがスタックされると、要素全体が親スタッキング コンテキスト内で順番にスタックされます。 2. スタッキングレベル スタッキング レベルは、同じスタッキング コンテキスト内の Z 軸上の要素の表示順序の概念を決定します。
スタック レベルは必ずしも z-index によって決定されるわけではないことに注意してください。z-index によって決定されるのは、配置された要素のスタック レベルのみです。他の種類の要素のスタック レベルは、スタック順序、HTML に表示される順序、および親の上にある要素のスタック レベルによって決定されます。詳細なルールについては、以下のスタック順序の概要を参照してください。 3. Zインデックス CSS 2.1 では、すべてのボックス モデル要素は 3 次元座標系に配置されます。一般的に使用される水平軸と垂直軸に加えて、ボックス モデルの要素は「Z 軸」に沿って積み重ねることもできます。要素が重なり合う場合、Z 軸の順序が非常に重要になります。 -- CSS 2.1 セクション 9.9.1 - 階層化されたプレゼンテーション z-index は位置指定要素にのみ適用され、位置指定されていない要素には無効です。正の整数、負の整数、0、または auto に設定できます。位置指定要素に z-index が設定されていない場合、デフォルトは auto です。 要素の z-index 値は、同じスタック コンテキスト内でのみ意味を持ちます。親スタッキング コンテキストのスタッキング レベルが別のスタッキング コンテキストのスタッキング レベルよりも低い場合、その z-index を高く設定しても効果はありません。したがって、大きな z-index 値が機能しない状況に遭遇した場合は、その親スタッキング コンテキストが他のスタッキング コンテキストによってカバーされているかどうかを確認してください。 4. 積み重ね順序 スタック順序 (スタック順序、スタック順序、スタック順序) は、同じスタック コンテキスト内の要素の順序を表します。スタックの一番下から、次の 7 つのスタック順序があります。
同じ積み重ね順序の要素は、HTML に表示される順序で積み重ねられます。レベル 7 の要素は、それより前の要素の上に表示され、下位レベルの要素を覆うように見えます。 5. 実際の戦闘 5.1 一般的な状況
Codepen - 通常ケースを参照 したがって、どの要素にも z-index プロパティがない場合、この例の要素は次の順序 (下から上へ) で積み重ねられます。
赤、緑、青はすべてz-index autoで配置された要素であるため、7層の重ね順ルールによれば、これらはすべて重ね順の6番目のレベルに属し、HTMLでの出現順に重ねられます: 5.2 同じスタックコンテキストの親要素 赤と緑は Codepen を参照してください - 親要素は異なりますが、両方ともルート要素の下にあります この例では、赤、青、緑の要素の親要素である 5.3 子要素にZインデックスを追加する 赤と緑は Codepen - z-index の設定を参照してください この例では、赤、青、緑、黄色の要素の親要素に新しいスタッキング コンテキストは生成されません。これらはすべて、ルート スタッキング コンテキスト内の要素に属します。 赤と青には z-index が設定されておらず、どちらもスタック順序のレベル 6 に属し、HTML に表示される順序でスタックされます。
この例では、下から上の順序は、 5.4 異なるスタッキングコンテキストを持つ親要素の場合 赤と緑は Codepen - 異なるスタックコンテキストの親を参照してください この例では、赤、緑、青はすべて z-index が設定された配置要素ですが、その親要素は新しいスタック コンテキストを作成します。
この例では、低から高への順序は (私が遭遇した状況はこの例に似ています) 5.5 子要素の不透明度を設定する 赤と緑は Codepen - 不透明度の影響を参照 前述したように、
この例では、低いものから高いものの順序は、 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: Tomcat のメモリ構成の正しい姿勢についての簡単な説明
>>: editplus の Zen コーディング例コードの説明
目次移行ツールアプリケーション変換mysql8.0 ドライバ パッケージを追加データソース構成の変更...
注意を払う必要があります。HTML Police がコードを調べて、意味のないタグをすべて見つけ出す...
目次1. CentOS7.0へのJDK1.8のインストール2. Dockerのインストール3.Doc...
layui テーブルには複数行のデータがあります。外部入力コンテンツを通じて、指定された行を見つけ...
レコード ロックは、単一のインデックス レコードをロックします。レコード ロックは常にインデックスを...
1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...
CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...
この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...
序文実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でre...
この記事を読む前に、ボリューム、バインドマウント、tmpfs マウントの基本を理解しておいてください...
ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラー...
Nginxを使用する目的Alibaba Cloud ECS クラウド サーバーを使用して、まずは著者...
jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...
複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...
ミニプログラムページ間で値を渡すみなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。...