From a80467971851f86156df1e858cab699804ba235b Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 7 Nov 2021 01:22:45 +0900 Subject: CSS Positioned Layout 以下を更新 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 2021/11/06 時点の英語版に同期 --- files/ja/web/css/css_positioning/index.md | 82 +++--- .../understanding_z_index/adding_z-index/index.md | 148 +++++----- .../css_positioning/understanding_z_index/index.md | 50 ++-- .../stacking_and_float/index.md | 112 ++++---- .../stacking_context_example_1/index.md | 127 ++++----- .../stacking_context_example_2/index.md | 128 ++++----- .../stacking_context_example_3/index.md | 189 ++++++------- .../stacking_without_z-index/index.md | 90 +++---- .../the_stacking_context/index.md | 297 ++++++++++----------- 9 files changed, 535 insertions(+), 688 deletions(-) (limited to 'files/ja/web/css/css_positioning') diff --git a/files/ja/web/css/css_positioning/index.md b/files/ja/web/css/css_positioning/index.md index fbfc022492..732dbc87c7 100644 --- a/files/ja/web/css/css_positioning/index.md +++ b/files/ja/web/css/css_positioning/index.md @@ -4,58 +4,36 @@ slug: Web/CSS/CSS_Positioning tags: - CSS - CSS 位置指定レイアウト - - Reference + - ガイド - 概要 + - リファレンス translation_of: Web/CSS/CSS_Positioning --- -
{{CSSRef}}
- -

CSS 位置指定レイアウト (CSS Positioned Layout) は CSS モジュールの一つで、ページ上での要素の位置指定方法を定義します。

- -

リファレンス

- -

CSS プロパティ

- -
- -
- -

ガイド

- -
-
CSS の z-index を理解する
-
重ね合わせコンテキストの記述法と Z 順の動作方法の説明を、いくつかの例と共に紹介します。
-
- -

仕様書

- - - - - - - - - - - - - - - - - - - - - -
仕様書状態備考
{{ SpecName('CSS3 Positioning') }}{{ Spec2('CSS3 Positioning') }} 
{{ SpecName('CSS2.1', 'visuren.html') }}{{ Spec2('CSS2.1') }} 
+{{CSSRef}} + +**CSS 位置指定レイアウト** (CSS Positioned Layout) は CSS モジュールの一つで、ページ上での要素の位置指定方法を定義します。 + +## リファレンス + +### CSS プロパティ + +- {{cssxref("bottom")}} +- {{cssxref("clear")}} +- {{cssxref("float")}} +- {{cssxref("left")}} +- {{cssxref("position")}} +- {{cssxref("right")}} +- {{cssxref("top")}} +- {{cssxref("z-index")}} + +## ガイド + +- [CSS の z-index を理解する](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index) + - : 重ね合わせコンテキストの記述法と Z 順の動作方法の説明を、いくつかの例と共に紹介します。 + +## 仕様書 + +| 仕様書 | 状態 | 備考 | +| ---------------------------------------- | ------------------------------- | ---- | +| {{ SpecName('CSS3 Positioning') }} | {{ Spec2('CSS3 Positioning') }} | | +| {{ SpecName('CSS2.1', 'visuren.html') }} | {{ Spec2('CSS2.1') }} | | diff --git a/files/ja/web/css/css_positioning/understanding_z_index/adding_z-index/index.md b/files/ja/web/css/css_positioning/understanding_z_index/adding_z-index/index.md index db4d102e1b..fb1bebda5b 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/adding_z-index/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/adding_z-index/index.md @@ -2,85 +2,81 @@ title: z-index の使用 slug: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index tags: - - Advanced + - 上級者 - CSS - - Guide - - Reference + - ガイド + - リファレンス - Understanding_CSS_z-index - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index --- -
{{cssref}}
- -

この記事の最初の部分、z-index なしの重ね合わせは、既定でどのように重ね合わせが行われるのかを説明します。独自の重ね合わせ順を定義したい場合は、位置指定要素に {{cssxref("z-index")}} プロパティを使用して行うことができます。

- -

z-index プロパティは整数値 (正の数、ゼロ、負の数) で指定することができ、 Z 軸方向の要素の位置を表します。もし Z 軸になじみがないのであれば、重ね合わされたレイヤーがあって、それぞれに番号が付いていることを想像してください。レイヤーは番号順に、大きな番号は小さな番号の上に描画されます。

- - - -
-

注:

- - -
+{{CSSRef}} + +この記事の最初の部分、[z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index)は、既定でどのように重ね合わせが行われるのかを説明します。独自の重ね合わせ順を定義したい場合は、[位置指定](/ja/docs/Web/CSS/position#types_of_positioning)要素に {{cssxref("z-index")}} プロパティを使用して行うことができます。 -

次の例では、レイヤーの重なり順が z-index を使って決め直されています。#5 の z-index は 、位置指定要素でないため効果を持ちません。

+`z-index` プロパティは整数値 (正の数、ゼロ、負の数) で指定することができ、 Z 軸方向の要素の位置を表します。もし Z 軸になじみがないのであれば、重ね合わされたレイヤーがあって、それぞれに番号が付いていることを想像してください。レイヤーは番号順に、大きな番号は小さな番号の上に描画されます。 -

{{EmbedLiveSample("Source_code_for_the_example", 600, 400)}}

+- 最下位レイヤー _(観ている人から最も遠い)_ +- ... +- Layer -3 +- Layer -2 +- Layer -1 +- Layer 0 _(既定の描画レイヤー)_ +- Layer 1 +- Layer 2 +- Layer 3 +- ... +- 最上位レイヤー _(観ている人に最も近い)_ -

例のソースコード

+> **Note:** +> +> - z-index プロパティが定義されていなければ、要素は既定の描画レイヤー 0 (ゼロ) に描画されます。 +> - 同じ `z-index` 値を持つ要素が複数あれば (=同じレイヤー上にある場合)、 [z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index)で説明した重ね合わせ規則が当てはまります。 -

HTML

+次の例では、レイヤーの重ね合わせ順が `z-index` を使って決め直されています。#5 の `z-index` は 、位置指定要素でないため効果を持ちません。 -
<div id="abs1">
-  <b>DIV #1</b>
-  <br />position: absolute;
-  <br />z-index: 5;
-</div>
+{{EmbedLiveSample("Source_code_for_the_example", 600, 400)}}
 
-<div id="rel1">
-  <b>DIV #2</b>
-  <br />position: relative;
-  <br />z-index: 3;
-</div>
+

例のソースコード

-<div id="rel2"> - <b>DIV #3</b> - <br />position: relative; - <br />z-index: 2; -</div> +### HTML -<div id="abs2"> - <b>DIV #4</b> - <br />position: absolute; - <br />z-index: 1; -</div> +```html +
+ DIV #1 +
position: absolute; +
z-index: 5; +
-<div id="sta1"> - <b>DIV #5</b> - <br />no positioning - <br />z-index: 8; -</div> -
+
+ DIV #2 +
position: relative; +
z-index: 3; +
-

CSS

+
+ DIV #3 +
position: relative; +
z-index: 2; +
-
div {
+
+ DIV #4 +
position: absolute; +
z-index: 1; +
+ +
+ DIV #5 +
no positioning +
z-index: 8; +
+``` + +### CSS + +```css +div { padding: 10px; opacity: 0.7; text-align: center; @@ -140,25 +136,13 @@ b { background-color: #ffc; margin: 0px 50px 0px 50px; } -
+```

関連情報

- - -
-

原典情報

- - -
+- [z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index) : 既定の重ね合わせ規則 +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index diff --git a/files/ja/web/css/css_positioning/understanding_z_index/index.md b/files/ja/web/css/css_positioning/understanding_z_index/index.md index cd1337f9a5..6abd579cfc 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/index.md @@ -2,48 +2,32 @@ title: CSS の z-index を理解する slug: Web/CSS/CSS_Positioning/Understanding_z_index tags: - - Advanced + - 上級者 - CSS - - Guide - - Reference + - ガイド + - リファレンス - Understanding_CSS_z-index - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index --- -
{{cssref}}
+{{CSSRef}} -

最も基本的な場合では、 HTML のページは二次元であると考えることができ、テキスト、画像、その他の要素が重なることなくページに並べられます。この場合、単一のレンダリングの流れがあり、すべての要素で他の要素との間で取る間隔が分かっています。 {{cssxref("z-index")}} 属性で、コンテンツの描画時にオブジェクトの重なり合いの順番を調整することができます。

+最も基本的な場合では、 [HTML](/ja/docs/Web/HTML) のページは二次元であると考えることができ、テキスト、画像、その他の要素が重なることなくページに並べられます。この場合、単一のレンダリングの流れがあり、すべての要素で他の要素との間で取る間隔が分かっています。{{cssxref("z-index")}} 属性で、コンテンツの描画時にオブジェクトの重なり合いの順番を調整することができます。 -
-

CSS 2.1 では、各ボックスは三次元空間の座標を持ちます。ボックスは、水平方向と垂直方向に加えて、垂直方向の "z 軸" に沿って配置され、その中で一番上の1つが整形されます。 Z 軸の位置は、特にボックス同士が視覚的に重なる場合に関係します。

-
+> _CSS 2.1 では、各ボックスは三次元空間の座標を持ちます。ボックスは、水平方向と垂直方向に加えて、垂直方向の "z 軸" に沿って配置され、その中で一番上の1つが整形されます。 Z 軸の位置は、特にボックス同士が視覚的に重なる場合に関係します。_ -

(CSS 2.1 Section 9.9.1 - Layered presentation より)

+([CSS 2.1 Section 9.9.1 - Layered presentation](https://www.w3.org/TR/CSS21/visuren.html#z-index) より) -

これは、 CSS のスタイル規則によって、ボックスを通常の描画レイヤー (レイヤー 0) 以外のレイヤーに配置できるということです。各レイヤーの Z 位置は、描画処理の重ね合わせ順を示す整数値で表現されます。数値が大きいほど、見ている人に近いことになります。 Z 位置は CSS の z-index プロパティで制御できます。

+これは、 CSS のスタイルルールによって、ボックスを通常の描画レイヤー (レイヤー 0) 以外のレイヤーに配置できるということです。各レイヤーの Z 位置は、描画処理の重ね合わせ順を示す整数値で表現されます。数値が大きいほど、見ている人に近いことになります。 Z 位置は CSS の `z-index` プロパティで制御できます。 -

z-index を使うのは非常に簡単に見えます。単一のプロパティに、単一の整数値を割り当て、分かりやすい振舞いをします。しかし、 z-index を HTML 要素の複雑な階層に適用するとき、その振舞いは理解や予測がしづらくなることがあります。これは重ね合わせの規則が複雑であるためです。実際、 CSS 仕様書ではこれらの規則をもっと分かりやすく説明するために、専用の章である CSS-2.1 Appendix E が占められています。

+`z-index` を使うのは非常に簡単に見えます。単一のプロパティに、単一の整数値を割り当て、分かりやすい振る舞いをします。しかし、 `z-index` を HTML 要素の複雑な階層に適用するとき、その振る舞いは理解や予測がしづらくなることがあります。これは重ね合わせの規則が複雑であるためです。これは、複雑な重ね合わせ規則によるものです。実際、CSS 仕様書ではこれらの規則をより詳しく説明するための専用のとして [CSS-2.1 Appendix E](https://www.w3.org/TR/CSS21/zindex.html) が設けられています。 -

この記事では、単純化といくつかの例によって、こうした規則の説明を行なってみます。

+この記事では、いくつかの例を挙げながら、それらのルールを簡単に説明してみます。 -
    -
  1. z-index なしの重ね合わせ: 既定の重ね合わせ規則
  2. -
  3. 浮動ブロックの重ね合わせ: 浮動要素が重ね合わせでどのように扱われるか
  4. -
  5. z-index の使用: z-index を使って既定の重ね合わせ変更する方法
  6. -
  7. 重ね合わせコンテキスト: 重ね合わせコンテキストについてのメモ
  8. -
  9. 重ね合わせコンテキストの例 1: 2階層の HTML 構造で、最終階層の z-index
  10. -
  11. 重ね合わせコンテキストの例 2: 2階層の HTML 構造、全レベルの z-index
  12. -
  13. 重ね合わせコンテキストの例 3: 3階層の HTML 構造、第2階層の z-index
  14. -
- -
-

原典情報

- - - -

著者のメモ: Wladimir Palant と Rod Whiteley、レビューありがとう。

-
+1. [`z-index` なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +2. [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +3. [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +4. [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +5. [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の `z-index` +6. [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの `z-index` +7. [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の `z-index` diff --git a/files/ja/web/css/css_positioning/understanding_z_index/stacking_and_float/index.md b/files/ja/web/css/css_positioning/understanding_z_index/stacking_and_float/index.md index 375d11f2a4..d4f7c6e150 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/stacking_and_float/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/stacking_and_float/index.md @@ -2,68 +2,67 @@ title: 浮動ブロックの重ね合わせ slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float tags: - - Advanced + - 上級者 - CSS - - Guide - - Reference + - ガイド + - リファレンス - Understanding_CSS_z-index - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float --- -
{{cssref}}
+{{CSSRef}} -

浮動 (floated) ブロックについては、重ね合わせ順序が少し異なります。浮動ブロックは位置指定なしのブロックと位置指定ブロックの間に配置されます。

+浮動 (floated) ブロックについては、重ね合わせ順序が少し異なります。浮動ブロックは位置指定なしのブロックと位置指定ブロックの間に配置されます。 -
    -
  1. ルート要素の背景と境界
  2. -
  3. 位置指定なしのブロックの子孫、 HTML 内での出現順
  4. -
  5. 浮動ブロック
  6. -
  7. 位置指定要素、 HTML 内での出現順
  8. -
+1. ルート要素の背景と境界 +2. 位置指定なしの子孫ブロック、 HTML 内での出現順 +3. _浮動ブロック_ +4. 位置指定ありの子孫要素、 HTML 内での出現順 -

実際、以下の例に見られるように、位置指定なしのブロック (DIV #4) の背景と境界は、完全に浮動ブロックの影響を受けませんが、内容は影響を受けます。この挙動は、上記のリストに規則を追加することで示すことができます。

+位置指定要素、位置指定なしの要素についての説明は、[位置指定の種類](/ja/docs/Web/CSS/position#types_of_positioning)を参照してください。 -
    -
  1. ルート要素の背景と境界
  2. -
  3. 位置指定なしのブロックの子孫、 HTML 内での出現順
  4. -
  5. 浮動ブロック
  6. -
  7. 位置指定なしのインライン要素の子孫
  8. -
  9. 位置指定要素、 HTML 内での出現順
  10. -
+実際、以下の例に見られるように、位置指定なしのブロック (DIV #4) の背景と境界は、完全に浮動ブロックの影響を受けませんが、内容は影響を受けます。この挙動は、上記のリストに規則を追加することで示すことができます。 -

{{EmbedLiveSample("Source_code_for_the_example", 600, 250)}}

+1. ルート要素の背景と境界 +2. 位置指定なしの子孫ブロック、 HTML 内での出現順 +3. 浮動ブロック +4. 位置指定なしの子孫のインライン要素 +5. 位置指定ありの子孫要素、 HTML 内での出現順 -
-

注: 位置指定なしのブロック (DIV #4) の opacity の値を変更すると、そのブロックの背景と境界が、浮動ブロックや位置指定ブロックの上に飛び出し、おかしな結果になります。これは、仕様書の中で、 opacity の値を適用すると新しい重ね合わせコンテキストを作成するという、奇妙な部分によるものです (What No One Told You About Z-Index を参照してください)。

-
+{{EmbedLiveSample("Source_code_for_the_example", 600, 250)}} -

例のソースコード

+> **Note:** 位置指定なしのブロック (DIV #4) の `opacity` の値を変更すると、そのブロックの背景と境界が、浮動ブロックや位置指定ブロックの上に飛び出し、おかしな結果になります。これは、仕様書の中で、 `opacity` の値を適用すると新しい重ね合わせコンテキストを作成するという、奇妙な部分によるものです ([What No One Told You About Z-Index](https://philipwalton.com/articles/what-no-one-told-you-about-z-index/) を参照してください)。 -

HTML

+

例のソースコード

-
<div id="abs1">
-  <b>DIV #1</b><br />position: absolute;</div>
+### HTML
 
-<div id="flo1">
-  <b>DIV #2</b><br />float: left;</div>
+```html
+
+ DIV #1
position: absolute;
-<div id="flo2"> - <b>DIV #3</b><br />float: right;</div> +
+ DIV #2
float: left;
-<br /> +
+ DIV #3
float: right;
-<div id="sta1"> - <b>DIV #4</b><br />no positioning</div> +
-<div id="abs2"> - <b>DIV #5</b><br />position: absolute;</div> +
+ DIV #4
no positioning
-<div id="rel1"> -  <b>DIV #6</b><br />position: relative;</div>
+
+ DIV #5
position: absolute;
-

CSS

+
DIV #6
position: relative;
+``` -
div {
+### CSS
+
+```css
+div {
   padding: 10px;
   text-align: center;
 }
@@ -124,25 +123,14 @@ b {
   background-color: #cff;
   margin: 0px 10px 0px 10px;
   text-align: left;
-} 
- -

関連情報

- - - -
-

原典情報

- - -
+} +``` + +## 関連情報 + +- [z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +- [z-index の追加](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index diff --git a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.md b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.md index 430a63eca1..56fa1b25bb 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_1/index.md @@ -2,79 +2,77 @@ title: 重ね合わせコンテキストの例 1 slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 tags: - - Advanced + - 上級者 - CSS - - Guide + - ガイド - Understanding_CSS_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1 --- -
{{cssref}}
+{{CSSRef}} -

« CSS « CSS の z-index を理解する

+« [CSS](/ja/docs/Web/CSS) « [CSS の z-index を理解する](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index "CSS の z-index を理解する") -

重ね合わせコンテキストの例 1

+## 重ね合わせコンテキストの例 1 -

基礎的な例から始めましょう。ルートの重ね合わせコンテキストに、2つの DIV (DIV #1 と DIV #3) があって、どちらも relative の位置指定がされていますが、 z-index プロパティの指定はありません。 DIV #1 の中に absolute の位置指定がされた DIV #2 があり、一方 DIV #3 の中には absolute の位置指定がされた DIV #4 があります。どちらも z-index プロパティの指定はありません。

+基礎的な例から始めましょう。ルートの重ね合わせコンテキストに、2 つの DIV (DIV #1 と DIV #3) があって、どちらも relative の位置指定がされていますが、 z-index プロパティの指定はありません。 DIV #1 の中に absolute の位置指定がされた DIV #2 があり、一方 DIV #3 の中には absolute の位置指定がされた DIV #4 があります。どちらも z-index プロパティの指定はありません。 -

唯一の重ね合わせコンテキストはルート要素にあります。 z-indexe がなければ要素は出現した順に重なります。

+唯一の重ね合わせコンテキストはルート要素にあります。 z-indexe がなければ要素は出現した順に重なります。 -

重ね合わせコンテキストの例 1

+![重ね合わせコンテキストの例 1](understanding_zindex_05a.png) -

DIV #2 に正の (ゼロでなく auto でもない) z-index 値が代入されれば、他のどの DIV よりも上に描画されます。

+DIV #2 に正の (ゼロでなく auto でもない) z-index 値が代入されれば、他のどの DIV よりも上に描画されます。 -

重ね合わせコンテキストの例 1

+![重ね合わせコンテキストの例 1](understanding_zindex_05b.png) -

さらにまた、DIV #4 に DIV #2 のものより大きな正の z-index が代入されれば、DIV #4 は、DIV #2を含む他のどの要素よりも上に描画されます。

+さらにまた、DIV #4 に DIV #2 のものより大きな正の z-index が代入されれば、DIV #4 は、DIV #2を含む他のどの要素よりも上に描画されます。 -

重ね合わせコンテキストの例 1

+![重ね合わせコンテキストの例 1](understanding_zindex_05c.png) -

最後に見た例では、 DIV #2 と DIV #4 が兄弟要素ではないことがわかります。これは、HTML 要素の階層構造においては、それぞれ別の親要素を持っているからです。そうだとしても、DIV #4 と DIV #2 間の重なり順は、z-index を使って制御できます。たまたま、DIV #1 と DIV #3 には z-index 値が代入されていなかったため、重ね合わせコンテキストを作らなかったのです。これは、DIV #2 と DIV #3 を含むそれら要素の中身がどれも、同一のルートの重ね合わせコンテキストに含まれるということです。

+最後に見た例では、 DIV #2 と DIV #4 が兄弟要素ではないことがわかります。これは、HTML 要素の階層構造においては、それぞれ別の親要素を持っているからです。そうだとしても、DIV #4 と DIV #2 間の重なり順は、z-index を使って制御できます。たまたま、DIV #1 と DIV #3 には z-index 値が代入されていなかったため、重ね合わせコンテキストを作らなかったのです。これは、DIV #2 と DIV #4 を含むそれら要素の中身がどれも、同一のルートの重ね合わせコンテキストに含まれるということです。 -

重ね合わせコンテキストの見地からは、DIV #1 と DIV #3 は単にルート要素に吸収され、結果の階層構造は次のようになっています:

+重ね合わせコンテキストの見地からは、DIV #1 と DIV #3 は単にルート要素に吸収され、結果の階層構造は次のようになっています: - +- ルートの重ね合わせコンテキスト -
注: DIV #1 と DIV #3 は半透明ではありません。位置指定された要素に1未満の不透明度を与えると、ちょうど z-index 値を追加したのと同じように、暗黙的に重ね合わせコンテキストが作られることを忘れないのは大切です。また、この例は、親要素が重ね合わせコンテキストを作らないときに、何が起こるのかを示しています。
+ - DIV #2 (z-index 1) + - DIV #4 (z-index 2) -

+> **Note:** DIV #1 と DIV #3 は半透明ではありません。位置指定された要素に1未満の不透明度を与えると、ちょうど z-index 値を追加したのと同じように、暗黙的に重ね合わせコンテキストが作られることを忘れないのは大切です。また、この例は、親要素が重ね合わせコンテキストを作らないときに、何が起こるのかを示しています。 -

HTML

+

-
<div id="div1">
-<br /><span class="bold">DIV #1</span>
-<br />position: relative;
-   <div id="div2">
-   <br /><span class="bold">DIV #2</span>
-   <br />position: absolute;
-   <br />z-index: 1;
-   </div>
-</div>
+### HTML
 
-<br />
+```html
+
+
DIV #1 +
position: relative; +
+
DIV #2 +
position: absolute; +
z-index: 1; +
+
+ +
-<div id="div3"> -<br /><span class="bold">DIV #3</span> -<br />position: relative; - <div id="div4"> - <br /><span class="bold">DIV #4</span> - <br />position: absolute; - <br />z-index: 2; - </div> -</div> +
+
DIV #3 +
position: relative; +
+
DIV #4 +
position: absolute; +
z-index: 2; +
+
-</body></html> -
+ +``` -

CSS

+### CSS -
.bold {
+```css
+.bold {
     font-weight: bold;
     font: 12px Arial;
 }
@@ -110,29 +108,18 @@ translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_e
     background-color: #ddddff;
     text-align: left;
     padding-left: 10px;
-}
- -

結果

- -

{{ EmbedLiveSample('Example', '', '', '', 'Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1') }}

+} +``` -

関連情報

+### 結果 - +{{ EmbedLiveSample('Example', '', '', '', 'Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1') }} -
-

原典情報

+## 関連情報 - -
+- [z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index diff --git a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.md b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.md index a99befee8d..c978ea5977 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_2/index.md @@ -2,49 +2,44 @@ title: 重ね合わせコンテキストの例 2 slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 tags: - - Advanced + - 上級者 - CSS - - Guide + - ガイド - Understanding_CSS_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2 --- -
{{cssref}}
+{{CSSRef}} -

« CSS « CSS の z-index を理解する

+« [CSS](/ja/docs/Web/CSS) « [CSS の z-index を理解する](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index) -

重ね合わせコンテキストの例 2

+## 重ね合わせコンテキストの例 2 -

これはとても簡単な例ですが、重ね合わせコンテキストの概念を理解するカギになります。前の例には同じ 4 つの DIV 要素がありましたが、今度は両方の階層構造で z-index プロパティが設定されています。

+これはとても簡単な例ですが、*重ね合わせコンテキスト*の概念を理解するカギになります。前の例には同じ 4 つの DIV 要素がありましたが、今度は両方の階層構造で `z-index` プロパティが設定されています。 -

{{ EmbedLiveSample('Example_source_code', '352', '270') }}

+{{ EmbedLiveSample('Example_source_code', '352', '270') }} -

DIV #2 (z-index: 2) が DIV #3 (z-index: 1) よりも上にあることがわかります。これは、どちらも同じ重ね合わせコンテキスト(ルートのもの)に属していて、z-index 値が要素の重なり方を決めているからです。

+DIV #2 (z-index: 2) が DIV #3 (z-index: 1) よりも上にあることがわかります。これは、どちらも同じ重ね合わせコンテキスト(ルートのもの)に属していて、z-index 値が要素の重なり方を決めているからです。 -

変に思えるかもしれないのは、z-index の値に関わらず、DIV #2 (z-index: 2) が DIV #4 (z-index: 10) よりも上にあることです。この理由は、これらの要素が同一の重ね合わせコンテキストに属していないためです。DIV #4 は DIV #3 によって作られた重ね合わせコンテキストに所属していて、以前の説明にあるように DIV #3 (とその内部にあるものすべて) は DIV #2 よりも下にあります。

+変に思えるかもしれないのは、`z-index` の値に関わらず、DIV #2 (z-index: 2) が DIV #4 (z-index: 10) よりも上にあることです。この理由は、これらの要素が同一の重ね合わせコンテキストに属していないためです。DIV #4 は DIV #3 によって作られた重ね合わせコンテキストに所属していて、以前の説明にあるように DIV #3 (とその内部にあるものすべて) は DIV #2 よりも下にあります。 -

状況をもっとよく理解するために、重ね合わせコンテキストの階層構造をご覧ください:

+状況をもっとよく理解するために、重ね合わせコンテキストの階層構造を示します。 - +- ルートの重ね合わせコンテキスト -
注: 一般に、 HTML の階層構造は重ね合わせコンテキストの階層構造と異なることを忘れないほうが良いでしょう。重ね合わせコンテキストの階層構造では、重ね合わせコンテキストを作らない要素はその親要素に吸収されます。
+ - DIV #2 (z-index 2) + - DIV #3 (z-index 1) -

例のソースコード

+ - DIV #4 (z-index 10) -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-<head><style type="text/css">
+> **Note:** 一般に、 HTML の階層構造と重ね合わせコンテキストの階層構造は異なるということを覚えておくと良いでしょう。重ね合わせコンテキストの階層構造では、重ね合わせコンテキストを作らない要素はその親要素に吸収されます。
+
+

例のソースコード

+ +```html + + + -</style></head> - -<body> + -    <br /> +   
-    <div id="div1"><br /> -        <span class="bold">DIV #1</span><br /> +   

+        DIV #1
        position: relative; -        <div id="div2"><br /> -            <span class="bold">DIV #2</span><br /> -            position: absolute;<br /> +       

+            DIV #2
+            position: absolute;
            z-index: 2; -        </div> -    </div> +       
+   
-    <br /> +   
-    <div id="div3"><br /> -        <span class="bold">DIV #3</span><br /> -        position: relative;<br /> +   

+        DIV #3
+        position: relative;
        z-index: 1; -        <div id="div4"><br /> -            <span class="bold">DIV #4</span><br /> -            position: absolute;<br /> +       

+            DIV #4
+            position: absolute;
            z-index: 10; -        </div> -    </div> - -</body> -</html> -
- -

関連情報

- - - -
-

原典情報

- - -
+        +    + + + +``` + +## 関連情報 + +- [`z-index` なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index diff --git a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.md b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.md index ab325c9242..4fc0df6bca 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/stacking_context_example_3/index.md @@ -2,68 +2,63 @@ title: 重ね合わせコンテキストの例 3 slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 tags: - - Advanced + - 上級者 - CSS - - Guide + - ガイド - Understanding_CSS_z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3 --- -
{{cssref}}
+{{CSSRef}} -

« CSS « CSS の z-index を理解する

+« [CSS](/ja/docs/Web/CSS) « [CSS の z-index を理解する](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index) -

重ね合わせコンテキストの例 3

+## 重ね合わせコンテキストの例 3 -

この最後の例では、複数の階層を持つ HTML 構造内で、位置指定された要素を組み合わせたときと、 z-index がクラスセレクターを使って設定されたとき、発生する問題を示します。

+この最後の例では、複数の階層を持つ HTML 構造内で、位置指定された要素を組み合わせたときと、 `z-index` がクラスセレクターを使って設定されたとき、発生する問題を示します。 -

位置指定された DIV 要素で作られた、三階層の階層メニューを一例として見てみましょう。第二階層と第三階層の DIV 要素は、マウスが親要素をホバーしたり、クリックしたりすると現れます。通常この種類のメニューはクライアントサイドかサーバーサイドのどちらかでスクリプトにより生成されます。このためスタイルルールは id セレクターではなく、クラスセレクターで割り当てられます。

+位置指定された DIV 要素で作られた、3 階層の階層メニューを一例として見てみましょう。第 2 階層と第 3 階層の DIV 要素は、マウスが親要素をホバーしたり、クリックしたりすると現れます。通常この種類のメニューはクライアントサイドかサーバーサイドのどちらかでスクリプトにより生成されます。このためスタイルルールは id セレクターではなく、クラスセレクターで割り当てられます。 -

もし 3 つのメニュー階層が部分的に重なると、重なりの管理が問題になるかもしれません。

+もし 3 つのメニュー階層が部分的に重なると、重なりの管理が問題になるかもしれません。 -

{{ EmbedLiveSample('Example_source_code', '320', '330') }}

+{{ EmbedLiveSample('Example_source_code', '320', '330') }} -

第一階層のメニューは relative で位置指定されているだけなので、重ね合わせコンテキストは作られません。

+第 1 階層のメニューは relative で位置指定されているだけなので、重ね合わせコンテキストは作られません。 -

第二階層のメニューは、親要素内で absolute で位置指定されています。これを第一階層のすべてのメニューより上に置くために、z-index が使われています。問題は第二階層のメニューそれぞれに重ね合わせコンテキストが作られることと、第三階層のメニューが自分の親要素に属していることです。

+第 2 階層のメニューは、親要素内で absolute で位置指定されています。これを第 1 階層のすべてのメニューより上に置くために、`z-index` が使われています。問題は第 2 階層のメニューそれぞれに重ね合わせコンテキストが作られることと、第 3 階層のメニューが自分の親要素に属していることです。 -

したがって第三階層のメニューは後ろにある第二階層のメニューより下に重なりますが、これは第二階層のメニューがすべて同一の z-index 値を持っていて、デフォルトの重ね合わせ規則が適用されるからです。

+したがって第 3 階層のメニューは後ろにある第 2 階層のメニューより下に重なりますが、これは第 2 階層のメニューがすべて同一の `z-index` 値を持っていて、既定の重ね合わせ規則が適用されるからです。 -

状況をもっとよく理解できるよう、重ね合わせコンテキストの階層図を用意しました。

+状況をもっとよく理解できるよう、重ね合わせコンテキストの階層図を用意しました。 - +- ルートの重ね合わせコンテキスト -

この問題を回避するには、異なるレベル間のメニューの重なりを取り除くか、独自 (で異なった) z-index 値を クラスセレクターではなく ID セレクターを通じて設定するか、 HTML の階層構造をなくすかしてください。

+ - LEVEL #1 -
注: ソースコードを見ると、absolute で位置指定されたコンテナーとなる要素内に、第二階層と第三階層のメニューを作る DIV があることがわかります。この方法は、一度にすべてをグループ化し、位置づけするのに便利です。
+ - LEVEL #2 (z-index: 1) -

例のソースコード

+ - LEVEL #3 + - ... + - LEVEL #3 -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-<head><style type="text/css">
+    - LEVEL #2 (z-index: 1)
+    - ...
+    - LEVEL #2 (z-index: 1)
+
+  - LEVEL #1
+  - ...
+  - LEVEL #1
+
+この問題を回避するには、異なるレベル間のメニューの重なりを取り除くか、独自 (で異なった) `z-index` 値を クラスセレクターではなく ID セレクターを通じて設定するか、 HTML の階層構造をなくすかしてください。
+
+> **Note:** ソースコードを見ると、absolute で位置指定されたコンテナーとなる要素内に、第二階層と第三階層のメニューを作る DIV があることがわかります。この方法は、一度にすべてをグループ化し、位置づけするのに便利です。
+
+

例のソースコード

+ +```html + + + -<br /> + -<div class="lev1"> -<span class="bold">LEVEL #1</span> +
- <div id="container1"> +
+LEVEL #1 - <div class="lev2"> - <br /><span class="bold">LEVEL #2</span> - <br />z-index: 1; +
- <div id="container2"> +
+
LEVEL #2 +
z-index: 1; - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> - <div class="lev3"><span class="bold">LEVEL #3</span></div> +
- </div> +
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
+
LEVEL #3
- </div> +
- <div class="lev2"> - <br /><span class="bold">LEVEL #2</span> - <br />z-index: 1; - </div> +
- </div> -</div> +
+
LEVEL #2 +
z-index: 1; +
-<div class="lev1"> -<span class="bold">LEVEL #1</span> -</div> - -<div class="lev1"> -<span class="bold">LEVEL #1</span> -</div> +
+
-<div class="lev1"> -<span class="bold">LEVEL #1</span> -</div> +
+LEVEL #1 +
-</body></html> -
+
+LEVEL #1 +
-

関連情報

+
+LEVEL #1 +
- + +``` -
-

原典情報

+## 関連情報 - -
+- [`z-index` なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index -

: 実は、サンプル画像は間違っているようです。第二階層が第三階層に重複しているのは、第二階層が半透明であるため、新しい重ね合わせコンテキストが作成されるからです。基本的に、このサンプルページ全体が誤っており、誤解を招きます。

+**Note**: 実は、サンプル画像は間違っているようです。第 2 階層の 2 つ目が第 3 階層に重複しているのは、第 2 階層が半透明であるため、新しい重ね合わせコンテキストが作成されるからです。基本的に、このサンプルページ全体が誤っており、誤解を招きます。 diff --git a/files/ja/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.md b/files/ja/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.md index b076f8b7c2..3de4d4ad41 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/stacking_without_z-index/index.md @@ -2,49 +2,51 @@ title: z-index なしの重ね合わせ slug: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index tags: - - Advanced + - 上級者 - CSS - - Guide - - Reference + - ガイド + - リファレンス - Understanding_CSS_z-index - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index --- -
{{cssref}}
+{{CSSRef}} -

どの要素にも {{cssxref("z-index")}} プロパティが指定されていない場合、要素は以下の順序に (下から上に) 重ね合わせられます。

+どの要素にも {{cssxref("z-index")}} プロパティが指定されていない場合、要素は以下の順序で (下から上に) 重ね合わせられます。 -
    -
  1. ルート要素の背景と境界
  2. -
  3. 位置指定なしのブロックの子孫、 HTML 内での出現順
  4. -
  5. 位置指定要素、 HTML 内での出現順
  6. -
+1. ルート要素の背景と境界 +2. 位置指定なしの子孫ブロック、 HTML 内での出現順 +3. 位置指定ありの子孫要素、 HTML 内での出現順 -

{{cssxref("order")}} プロパティによって {{cssxref("flex")}} コンテナーの中の描画を「HTML の中での出現順」から変更したとき、重ね合わせコンテキストの順も同様に影響することを意識しておいて下さい。

+位置指定要素、位置指定なしの要素についての説明は、[位置指定の種類](/ja/docs/Web/CSS/position#types_of_positioning)を参照してください。 -

以下の例では、 #1 から #4 までの要素が位置指定要素です。 #5 の要素は static であり、 HTML マークアップの中で後に来ていたとしても、他の4つの要素の下に描かれます。

+{{cssxref("order")}} プロパティによってフレックスコンテナーの中の描画を「HTML の中での出現順」から変更したとき、重ね合わせコンテキストの順も同様に影響することを意識しておいて下さい。 -

{{EmbedLiveSample("Source_code_for_the_example", 600, 400)}}

+以下の例では、 #1 から #4 までの要素が位置指定要素です。 #5 の要素は static であり、 HTML マークアップの中で後に来ていたとしても、他の 4 つの要素の下に描かれます。 -

例のソースコード

+{{EmbedLiveSample("Source_code_for_the_example", 600, 400)}} -

HTML

+

例のソースコード

-
<div id="abs1" class="absolute">
-  <b>DIV #1</b><br />position: absolute;</div>
-<div id="rel1" class="relative">
-  <b>DIV #2</b><br />position: relative;</div>
-<div id="rel2" class="relative">
-  <b>DIV #3</b><br />position: relative;</div>
-<div id="abs2" class="absolute">
-  <b>DIV #4</b><br />position: absolute;</div>
-<div id="sta1" class="static">
-  <b>DIV #5</b><br />position: static;</div>
-
+### HTML -

CSS

+```html +
+ DIV #1
position: absolute;
+
+ DIV #2
position: relative;
+
+ DIV #3
position: relative;
+
+ DIV #4
position: absolute;
+
+ DIV #5
position: static;
+``` -
b {
+### CSS
+
+```css
+b {
   font-family: sans-serif;
 }
 
@@ -103,25 +105,13 @@ div {
   background-color: #ffc;
   margin: 0px 50px 0px 50px;
 }
-
- -

関連情報

- - - -
-

原典情報

- - -
+``` + +## 関連情報 + +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [z-index の追加](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): `z-index` を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context): 重ね合わせコンテキストについてのメモ +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index diff --git a/files/ja/web/css/css_positioning/understanding_z_index/the_stacking_context/index.md b/files/ja/web/css/css_positioning/understanding_z_index/the_stacking_context/index.md index 57daec3c78..57e5552017 100644 --- a/files/ja/web/css/css_positioning/understanding_z_index/the_stacking_context/index.md +++ b/files/ja/web/css/css_positioning/understanding_z_index/the_stacking_context/index.md @@ -2,153 +2,135 @@ title: 重ね合わせコンテキスト slug: Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context tags: - - Advanced + - 上級者 - CSS - - Reference - - z-index - ガイド + - リファレンス + - z-index translation_of: Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context --- -
{{cssref}}
- -

重ね合わせコンテキスト (Stacking context) は、ビューポートまたはウェブページに面していると想定されるユーザーに対する仮想的な Z 軸に沿って並べられた HTML 要素の三次元の概念化です。 HTML 要素は、要素の属性に基づいてこの空間を優先度つきの順序で占有します。

- -

重ね合わせコンテキスト

- -

この記事の前の部分である z-index の使用では、ある要素の描画順はそれらの z-index の値に影響を受けていました。これは、要素が重ね合わせコンテキストを生じさせる特別なプロパティを持っていたからです。

- -

重ね合わせコンテキストは以下のような場面で、文書の随所に様々な要素によって構成されます。

- - - -

重ね合わせコンテキストの内部で、子要素は前に説明した規則に従って重ね合わせられます。重要なのは、子要素の z-index 値は、その親要素に対してのみ意味を持つということです。重ね合わせコンテキストは、その親の重ね合わせコンテキストでは不可分な一つの固まりとして扱われます。

- -

まとめると、

- - - -
注: 重ね合わせコンテキストを作れるのが一部の要素に限定されるため、重ね合わせコンテキストは HTML 要素の階層構造の部分集合です。それ自身の重ね合わせコンテキストを作らない要素は、その親の重ね合わせコンテキストに同化される、と言えます。
- -

- -

Example of stacking rules modified using z-index

- -

この例では、配置要素はすべて、位置と z-index の値によって、それ自身の重ね合わせコンテキストを作ります。重ね合わせコンテキストの階層構造が、次のように構成されます。

- - - -

重要なのは、 DIV #4, DIV #5, DIV #6 は DIV #3 の子要素なので、DIV #3 の内側で重なり方が完全に決まることです。一旦 DIV #3 内部の重ね合わせと描画が終われば、DIV #3 はルート要素に丸ごと渡され、兄弟要素との重ね合わせ処理が行われます。

- -
-

注:

- - +{{CSSRef}} + +**重ね合わせコンテキスト** (Stacking context) は、ビューポートまたはウェブページに面していると想定されるユーザーに対する仮想的な Z 軸に沿って並べられた HTML 要素の三次元の概念化です。 HTML 要素は、要素の属性に基づいてこの空間を優先度つきの順序で占有します。 + +## 重ね合わせコンテキスト + +この記事の前の部分である [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index)では、ある要素の描画順はそれらの `z-index` の値に影響を受けていました。これは、要素が*重ね合わせコンテキスト*を生じさせる特別なプロパティを持っていたからです。 + +重ね合わせコンテキストは以下のような場面で、文書の随所に様々な要素によって構成されます。 + +- 文書のルート要素 (``) +- {{cssxref("position")}} の値が `absolute` または `relative` であり、かつ {{cssxref("z-index")}} の値が `auto` 以外の要素 +- {{cssxref("position")}} の値が `fixed` または `sticky` の要素 (sticky はすべてのモバイルブラウザーにありますが、古いデスクトップブラウザーにはありません)。 +- [フレックス](/ja/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox)コンテナーの子であり、 {{cssxref("z-index")}} の値が `auto` 以外の要素。 +- グリッド ({{cssxref("grid")}}) コンテナーの子であり、 {{cssxref("z-index")}} の値が `auto` 以外の要素。 +- {{cssxref("opacity")}} の値が `1` 未満である要素 ([不透明度の仕様](https://www.w3.org/TR/css3-color/#transparency)をご覧ください)。 +- {{cssxref("mix-blend-mode")}} の値が `normal` 以外の要素。 +- 以下のプロパティの何れかが `none` 以外の値を持つ要素。 + + - {{cssxref("transform")}} + - {{cssxref("filter")}} + - {{cssxref("perspective")}} + - {{cssxref("clip-path")}} + - {{cssxref("mask")}} / {{cssxref("mask-image")}} / {{cssxref("mask-border")}} + +- {{cssxref("isolation")}} の値が `isolate` である要素。 +- {{cssxref("-webkit-overflow-scrolling")}} の値が `touch` である要素。 +- {{cssxref("will-change")}} の値が、初期値以外で重ね合わせコンテキストを作成する任意のプロパティを指定している要素 ([この記事](https://dev.opera.com/articles/ja/css-will-change-property/)を参照)。 +- {{cssxref("contain")}} の値が `layout` または `paint` であるか、これらのどちらかを含む複合値 (すなわち `contain: strict`, `contain: content`) を持つ要素。 + +重ね合わせコンテキストの内部で、子要素は前に説明した規則に従って重ね合わせられます。重要なのは、子要素の `z-index` 値は、その親要素に対してのみ意味を持つということです。重ね合わせコンテキストは、その親の重ね合わせコンテキストでは不可分な一つの固まりとして扱われます。 + +まとめると、 + +- 重ね合わせコンテキストは他の重ね合わせコンテキストに含めることができ、その結果重ね合わせコンテキストの階層構造ができます。 +- 重ね合わせコンテキストはすべて、その兄弟要素と完全に独立しています。重ね合わせ処理では、子孫要素だけが考慮されます。 +- 重ね合わせコンテキストははめ込み式です。要素の中身が重ねられた後、その要素がまるごと、今度は親の重ね合わせコンテキストの重ね合わせ順の中にあるとみなされます。 + +> **Note:** 重ね合わせコンテキストを作れるのが一部の要素に限定されるため、重ね合わせコンテキストは HTML 要素の階層構造の部分集合です。それ自身の重ね合わせコンテキストを作らない要素は、その親の重ね合わせコンテキストに*同化される*、と言えます。 + +## 例 + +![z-index を用いた重ね合わせ規則の変更例](understanding_zindex_04.png) + +この例では、配置要素はすべて、位置と `z-index` の値によって、それ自身の重ね合わせコンテキストを作ります。重ね合わせコンテキストの階層構造が、次のように構成されます。 + +- ルート要素 + + - DIV #1 + - DIV #2 + - DIV #3 + + - DIV #4 + - DIV #5 + - DIV #6 + +重要なのは、 DIV #4, DIV #5, DIV #6 は DIV #3 の子要素なので、DIV #3 の内側で重なり方が完全に決まることです。いったん DIV #3 内部の重ね合わせと描画が終われば、DIV #3 はルート要素に丸ごと渡され、兄弟要素との重ね合わせ処理が行われます。 + +> **Note:** +> +> - DIV #4 は DIV #1 の下に描画されます。これは、DIV #1 の z-index (5) はルート要素の重ね合わせコンテキストでだけ有効な値で、DIV #4 の z-index (6) は DIV #3 の重ね合わせコンテキストでだけ有効な値だからです。DIV #4 は DIV #3 の内部にあり、DIV #3 は DIV #1 よりも小さな z-index 値を持っているので、DIV #4 は DIV #1 の下になります。 +> - 同じ理由で DIV #2 (z-index 2) は DIV #5 (z-index 1) の下に描画されます。これは DIV #5 が DIV #3 に含まれていて、DIV #3は DIV #2 より高い z-index 値を持っているからです。 +> - DIV #3 の z-index は 4 ですが、この値は DIV #4、DIV #5、DIV #6 の z-index とは独立しています。異なる重ね合わせコンテキストに含まれるためです。 +> - Z軸方向に重なった要素の描画順序の簡単な計算方法は、それがバージョン番号のようなものを持っていると考えることです。親要素のメジャーバージョン番号の下に、子要素のマイナーバージョン番号があるものとします。この方法で、 z-index 1 を持つ要素 (DIV #5) がどうやって z-index 2 を持つ要素 (DIV #2) の上になるのか、そして、 z-index 6 を持つ要素 (DIV #4) がどうやって z-index 5 を持つ要素 (DIV #1) の下になるのか、簡単にわかります。用意した例では次のようになります (以下は最終的な描画順に並べています)。 +> +> - ルート要素 +> +> - DIV #2 - z-index は 2 +> - DIV #3 - z-index は 4 +> +> - DIV #5 - z-index は 1、描画順は 4.1 なので、 z-index が 4 である要素の下に重なる +> - DIV #6 - z-index は 3、描画順は 4.3 なので、 z-index が 4 である要素の下に重なる +> - DIV #4 - z-index は 6、描画順は 4.6 なので、 z-index が 4 である要素の下に重なる +> +> - DIV #1 - z-index は 5 + +

+ +### HTML + +```html +
+

Division Element #1

+ position: relative;
+ z-index: 5;
+
+ +
+

Division Element #2

+ position: relative;
+ z-index: 2;
+
+ +
+
+

Division Element #4

+ position: relative;
+ z-index: 6;
+
+ +

Division Element #3

+ position: absolute;
+ z-index: 4;
+ +
+

Division Element #5

+ position: relative;
+ z-index: 1;
+
+ +
+

Division Element #6

+ position: absolute;
+ z-index: 3;
+
+``` + +### CSS -

- -

HTML

- -
<div id="div1">
-  <h1>Division Element #1</h1>
-  <code>position: relative;<br/>
-  z-index: 5;</code>
-</div>
-
-<div id="div2">
-  <h1>Division Element #2</h1>
-  <code>position: relative;<br/>
-  z-index: 2;</code>
-</div>
-
-<div id="div3">
-  <div id="div4">
-    <h1>Division Element #4</h1>
-    <code>position: relative;<br/>
-    z-index: 6;</code>
-  </div>
-
-  <h1>Division Element #3</h1>
-  <code>position: absolute;<br/>
-  z-index: 4;</code>
-
-  <div id="div5">
-    <h1>Division Element #5</h1>
-    <code>position: relative;<br/>
-    z-index: 1;</code>
-  </div>
-
-  <div id="div6">
-    <h1>Division Element #6</h1>
-    <code>position: absolute;<br/>
-    z-index: 3;</code>
-  </div>
-</div>
-
- -

CSS

- -
* {
+```css
+* {
   margin: 0;
 }
 html {
@@ -213,29 +195,18 @@ h1 {
   padding-top: 125px;
   background-color: #ddf;
   text-align: center;
-}
- -

結果

- -

{{ EmbedLiveSample('Example', '100%', '396') }}

+} +``` -

関連情報

+### 結果 - +{{ EmbedLiveSample('Example', '100%', '396') }} -
-

原典情報

+## 関連情報 -
    -
  • 原著者: Paolo Lombardi
  • -
  • この記事は原著者が YappY のためにイタリア語で書いた記事の英訳の邦訳です。Creative Commons: Attribution-Sharealike license の条件に従う限り、全内容の共有を認めます。
  • -
  • 最終更新日: 2005年7月9日
  • -
-
+- [z-index なしの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index): 既定の重ね合わせ規則 +- [浮動ブロックの重ね合わせ](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_and_float): 浮動要素が重ね合わせでどのように扱われるか +- [z-index の使用](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Adding_z-index): z-index を使って既定の重ね合わせ変更する方法 +- [重ね合わせコンテキストの例 1](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_1): 2 階層の HTML 構造で、最終階層の z-index +- [重ね合わせコンテキストの例 2](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_2): 2 階層の HTML 構造、全レベルの z-index +- [重ね合わせコンテキストの例 3](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_context_example_3): 3 階層の HTML 構造、第 2 階層の z-index -- cgit v1.2.3-54-g00ecf