Skip to content

Commit

Permalink
2024/07/27 時点の英語版に基づき更新
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Aug 21, 2024
1 parent b6188ef commit 7a35d36
Showing 1 changed file with 64 additions and 18 deletions.
82 changes: 64 additions & 18 deletions files/ja/web/css/@container/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
title: "@container"
slug: Web/CSS/@container
l10n:
sourceCommit: 3d4edafe934c84878d2a46d8c22911ba351b7261
sourceCommit: 4cb569f768ec9529724f8fb06539f2903a583a41
---

{{CSSRef}}{{SeeCompatTable}}
{{CSSRef}}

**`@container`**[CSS](/ja/docs/Web/CSS)[アットルール](/ja/docs/Web/CSS/At-rule)で、[格納コンテキスト](/ja/docs/Web/CSS/CSS_container_queries#格納コンテキストの命名) にスタイルを適用する条件付きグループルールです。
**`@container`**[CSS](/ja/docs/Web/CSS)[アットルール](/ja/docs/Web/CSS/At-rule)で、[コンテナーコンテキスト](/ja/docs/Web/CSS/CSS_containment/Container_queries#コンテナーコンテキストの命名)にスタイルを適用する条件付きグループルールです。
スタイル宣言は条件によってフィルタリングされ、条件が真の場合にコンテナーに適用されます。
この条件は、コンテナーのサイズが変わったときに評価されます。
この条件は、コンテナーのサイズまたは [`<style-feature>`](#container_style_queries) の値が変更されたときに評価されます。

{{cssxref("container-name")}} プロパティは、クエリーコンテナーの名前の一覧を指定します。これらの名前は、対象となるクエリーコンテナーをフィルターするために、`@container` ルールで使用することができます。オプションで、大文字と小文字を区別する `<container-name>` は、クエリーによって対象となるクエリーコンテナーをフィルタリングします。

オプションで大文字小文字を区別する {{cssxref("container-name")}} を指定することができ、これによって考慮するクエリーコンテナーの集合を、クエリーコンテナー名が一致するものだけにフィルタリングすることができます。
要素に対して適格なクエリーコンテナが選択されると、`<container-condition>` の各コンテナー機能はそのクエリーコンテナーに対して評価されます。
要素に対して適格なクエリーコンテナーが選択されると、`<container-condition>` の各コンテナー機能はそのクエリーコンテナーに対して評価されます。

## 構文

Expand All @@ -32,13 +33,25 @@ l10n:
font-size: 1.5em;
}
}
/* オプションの <container-name> 付き */
@container tall (height > 30rem) {
h2 {
line-height: 1.6;
}
}
```

###

- `<container-condition>`
- : コンテナーのサイズが変更されたときに、コンテナーに対して評価される特性の集合です。
`<stylesheet>` で定義したスタイルは、この条件が真であれば適用されます。

- : オプションの `<container-name>` および `<container-query>`。条件が真の場合、この `<stylesheet>` で定義されたスタイルが適用されます。

- `<container-name>`
- : オプション。クエリーが真と評価された際にスタイルが適用されるコンテナーの名前を、{{cssxref("ident")}} として指定します。
- `<container-query>`
- : コンテナーのサイズが変更された際に、クエリーコンテナーに対して評価される一連の特性を指定します。

- `<stylesheet>`
- : 一連の CSS 宣言です。

Expand All @@ -64,9 +77,9 @@ l10n:
}
```

### 名前付き格納コンテキスト
### 名前付きコンテナーコンテキスト

格納コンテキストには、 {{cssxref("container-name")}} プロパティを使用して名前を付けることができます。
コンテナーコンテキストには、 {{cssxref("container-name")}} プロパティを使用して名前を付けることができます。

```css
.post {
Expand All @@ -83,7 +96,7 @@ l10n:
}
```

コンテナクエリーでは、 {{cssxref("container-name")}} プロパティを使用して、クエリーコンテナー名と一致するコンテナー集合にフィルタリングします。
コンテナークエリーでは、 {{cssxref("container-name")}} プロパティを使用して、クエリーコンテナー名と一致するコンテナー集合にフィルタリングします。

```css
@container sidebar (width > 400px) {
Expand Down Expand Up @@ -141,11 +154,11 @@ l10n:
```js hidden
const post = document.querySelector(".post");
const span = document.createElement("span");
span.innerHTML = ".post width: " + post.clientWidth + "px";
span.textContent = ".post width: " + post.clientWidth + "px";
post.parentNode.insertBefore(span, post.nextSibling);
// リサイズ時に更新
window.addEventListener("resize", () => {
span.innerHTML = ".post width: " + post.clientWidth + "px";
span.textContent = ".post width: " + post.clientWidth + "px";
});
```

Expand Down Expand Up @@ -217,7 +230,7 @@ span {

### 入れ子のコンテナークエリー

単一のコンテナクエリーで複数のコンテナーを対象とすることはできません
単一のコンテナークエリーで複数のコンテナーを対象とすることはできません
同じ効果を持つコンテナークエリーを入れ子にすることは可能です。

以下は、 `summary` という名前のコンテナーが `400px` よりも幅が広く、かつ祖先に `800px` よりも幅の広いコンテナーがある場合に、宣言されたスタイルを適用するクエリーです。
Expand All @@ -230,10 +243,37 @@ span {
}
```

### スタイルのコンテナークエリー
### コンテナースタイルクエリー

{{CSSRef}}{{SeeCompatTable}}

コンテナークエリーは、対象のコンテナー要素のスタイルを計算して評価することもできます。コンテナースタイルクエリーは、1 つ以上の `style()` 関数記法を使用する `@container` クエリーです。 論理値の構文と、スタイル機能をスタイルクエリーに結合するロジックは、[CSS 機能クエリー](/ja/docs/Web/CSS/CSS_conditional_rules/Using_feature_queries) と同じです。

```css
@container style(<style-feature>),
not style(<style-feature>),
style(<style-feature>) and style(<style-feature>),
style(<style-feature>) or style(<style-feature>) {
/* <stylesheet> */
}
```

それぞれの `style()` の引数は、単一の `<style-feature>` です。 **`<style-feature>`** は、有効な CSS [宣言](/ja/docs/Web/CSS/Syntax#css_declarations)、CSS プロパティ、[`<custom-property-name>`](/ja/docs/Web/CSS/var#values) のいずれかです。

コンテナクエリーでは、コンテナー要素の計算されたスタイルを評価することもできます。
以下のコンテナークエリーは、コンテナー要素の `--accent-color` の {{cssxref("computed_value", "計算値")}} が `blue` かどうかを調べます。
```css
@container style(--themeBackground),
not style(background-color: red),
style(color: green) and style(background-color: transparent),
style(--themeColor: blue) or style(--themeColor: purple) {
/* <stylesheet> */
}
```

値のないスタイル特性は、指定されたプロパティの初期値と計算された値が異なる場合、真と評価されます。

`style()` 関数の引数として渡した `<style-feature>` が宣言である場合、スタイルクエリーは、宣言の値がクエリー対象のコンテナのそのプロパティの計算値と同じであれば真と評価されます。 そうでない場合は、偽と評価されます。

以下のコンテナークエリーは、コンテナー要素の `--accent-color` の{{cssxref("computed_value", "計算値")}}が `blue` かどうかを調べます。

```css
@container style(--accent-color: blue) {
Expand All @@ -244,6 +284,10 @@ span {
> [!NOTE]
> カスタムプロパティが `blue` という値を持つ場合、そのプロパティが {{cssxref("@property")}} で色として定義されていない限り、同等の 16 進コード `#0000ff` は一致しません。
個別指定プロパティを照会するスタイルの特性クエリは、計算された値が各プロパティで一致する場合は真となり、一致しない場合は偽となります。例えば、`@container style(border: 2px solid red)` は、その短縮形を構成する 12 個の個別指定プロパティ(`border-bottom-style` など)がすべて真であれば真になります。

グローバルな `revert``revert-layer``<style-feature>` の値としては不正なため、コンテナースタイルクエリーは偽になります。

## 仕様書

{{Specifications}}
Expand All @@ -254,8 +298,10 @@ span {

## 関連情報

- [コンテナークエリー](/ja/docs/Web/CSS/CSS_container_queries)
- [コンテナークエリーの使用](/ja/docs/Web/CSS/CSS_containment/Container_queries)
- [コンテナーのサイズおよびスタイルクエリーの使用](/ja/docs/Web/CSS/CSS_containment/Container_size_and_style_queries)
- {{Cssxref("container-name")}}
- {{Cssxref("container-type")}}
- {{Cssxref("contain")}}
- {{Cssxref("content-visibility")}}
- [CSS 拘束モジュール](/ja/docs/Web/CSS/CSS_containment)

0 comments on commit 7a35d36

Please sign in to comment.