container-typeとcontainer-name
container-typeでクエリコンテナを定義し、container-nameで名前を付けます。
「container-typeとcontainer-name」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。
コンテナクエリとは
コンテナクエリを使うと、ビューポートではなく親コンテナのサイズに基づいてCSSでスタイルを適用できます。これにより、コンポーネントが配置された場所に応じて適応する、真にコンポーネントベースのレスポンシブデザインを実現できます。
コンテナクエリが解決する問題
メディアクエリを使用する場合、幅300pxのサイドバー内にあるカードコンポーネントは、自分が狭い場所にいることを認識できません。認識できるのはビューポートが広いということだけです。コンテナクエリを使えば、コンポーネントは全体のビューポートではなく、自身のコンテナのサイズに反応できます。
container-type
コンテナをクエリするには、まずcontainer-typeを使ってクエリコンテナとして宣言します。
<div class="card-wrapper">This wrapper can now be queried for its own width via @container.</div>
container-typeの値
使用できる値は次のとおりです。
inline-size— コンテナのインライン方向の寸法に対するクエリを有効にします(横書きでは幅)size— インライン方向とブロック方向の両方の寸法に対するクエリを有効にします(幅と高さ)normal— デフォルト値です。サイズクエリは使用できませんが、スタイルクエリは引き続き使用できます
container-name
クエリで参照できるように、コンテナに名前を付けます。ネストしたコンテナが存在し、特定の祖先をクエリしたい場合に必要です。
<div class="sidebar">Named container: "sidebar"</div>
containerの短縮構文
containerの短縮構文では、名前とタイプの両方を設定できます。
<div class="card-grid">Container named "card-grid", type inline-size.</div>
名前のないコンテナを使う理由
名前のないコンテナもクエリできます。@containerルールは、デフォルトで最も近いコンテナの祖先を対象にします。名前が必要なのは、特定の祖先までスキップして対象にしたい場合だけです。
パフォーマンスに関する考慮事項
container-typeを設定したすべての要素には、独自のレイアウトの包含が適用されます。つまり、コンテナ内のサイズ変更が祖先要素に影響しないため、パフォーマンス上の利点があります。コンテナが変化しても、ブラウザーはページ全体を再計算する必要がありません。
containプロパティとの関係
container-type: inline-sizeを設定すると、要素に対して暗黙的にcontain: inline-size layout styleが設定されます。これにより、コンテナのサイズが自身のレイアウトに影響しなくなります。これはサイズクエリを機能させるために必要です。
実践的な設定例
コンテナクエリの完全な設定例です。
<div class="article-grid">
<div class="card">Card 1</div>
<div class="card">Card 2</div>
<div class="card">Card 3</div>
</div>
コンテナクエリとメディアクエリの比較
コンテナを使用する対象: コンポーネント単位の適応、異なるレイアウトコンテキストで再利用するコンポーネント、配置場所が分からないカードやウィジェット。メディアクエリを使用する対象: 全体的なレイアウト変更、タイポグラフィの拡大縮小、大きなセクションの表示と非表示。
確認問題
@containerルールで要素の幅をクエリできるようにするプロパティ値はどれですか。
まとめ
container-type: inline-sizeは、要素を幅に対するクエリコンテナとして定義します。container-nameを使うと、対象を選択できるようにコンテナへ名前を付けられます。containerの短縮構文では、両方を設定できます。コンテナクエリは、ビューポートのメディアクエリでは処理できない、未知のコンテキストに配置されたコンポーネントの問題を解決します。
よくある質問
「container-typeとcontainer-name」レッスンは無料ですか?
はい。「container-typeとcontainer-name」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。
「container-typeとcontainer-name」で何を学びますか?
container-typeでクエリコンテナを定義し、container-nameで名前を付けます。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CSS Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「container-typeとcontainer-name」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCSS Academyレッスンでコードを書いて実行できますか?
はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- container-typeとcontainer-name
- @containerルールとブレークポイント
- コンテナクエリ単位: cqw cqh
- コンテナクエリとメディアクエリの違い