container-type

Baseline 2023 *
Newly available

Since February 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

* Some parts of this feature may have varying levels of support.

Ein Element kann als Abfragecontainer mit der container-type CSS Eigenschaft festgelegt werden. container-type wird verwendet, um den Typ des Containerkontexts in einer Containerabfrage zu definieren. Die verfügbaren Containerkontexte sind:

  • Größe: Ermöglicht das selektive Anwenden von CSS-Regeln auf die Kinder eines Containers basierend auf allgemeinen Größen- oder Linienstärkebedingungen wie einer maximalen oder minimalen Dimension, einem Seitenverhältnis oder einer Ausrichtung.
  • Scroll-Zustand: Ermöglicht das selektive Anwenden von CSS-Regeln auf die Kinder eines Containers basierend auf einer Scroll-Zustandsbedingung, z. B. ob der Container ein teilweise gescrollter Scroll-Container ist oder ob der Container ein Snap-Ziel ist, das an seinen Scroll-Snap-Container geschnappt ist.

Hinweis: Bei Verwendung der container-type und container-name Eigenschaften werden die style und layout Werte der contain Eigenschaft automatisch angewendet.

Syntax

css
/* Keyword values */
container-type: normal;
container-type: size;
container-type: inline-size;
container-type: scroll-state;

/* Two values */
container-type: size scroll-state;

/* Global Values */
container-type: inherit;
container-type: initial;
container-type: revert;
container-type: revert-layer;
container-type: unset;

Werte

Die container-type Eigenschaft kann einen einzelnen Wert aus der untenstehenden Liste annehmen oder zwei Werte – einer davon muss scroll-state sein und der andere kann inline-size oder size sein. Mit anderen Worten, ein Element kann als Größenabfragecontainer, Scroll-Zustandsabfragecontainer, beides oder keines von beiden festgelegt werden.

inline-size

Etabliert einen Abfragecontainer für dimensionale Abfragen auf der Inline-Achse des Containers. Wendet Layout-, Stil- und Inline-Größen-Eindämmung auf das Element an.

Inline-Größen-Eindämmung wird auf das Element angewendet. Die Inline-Größe des Elements kann isoliert berechnet werden, wobei die Kindelemente ignoriert werden (siehe Using CSS containment).

normal

Standardwert. Das Element ist kein Abfragecontainer für Größenabfragen, bleibt aber ein Abfragecontainer für Stilabfragen des Containers.

scroll-state

Etabliert einen Abfragecontainer für Scroll-Zustandsabfragen auf dem Container. In diesem Fall wird die Größe des Elements nicht isoliert berechnet; es wird keine Eindämmung angewendet.

size

Etabliert einen Abfragecontainer für Größenabfragen des Containers in den Inline- und Block Dimensionen. Wendet Layout-, Stil- und Größeneindämmung auf den Container an.

Größeneindämmung wird auf das Element sowohl in Inline- als auch in Blockrichtung angewendet. Die Größe des Elements kann isoliert berechnet werden, wobei die Kindelemente ignoriert werden.

Formale Definition

Anfangswertnormal
Anwendbar aufalle Elemente
VererbtNein
Berechneter Wertwie angegeben
AnimationstypFarbe

Formale Syntax

container-type = 
normal |
[ [ size | inline-size ] || scroll-state ]

Beschreibung

Containerabfragen erlauben Ihnen, Stile innerhalb eines Containers selektiv basierend auf bedingten Abfragen, die auf dem Container durchgeführt werden, anzuwenden. Die @container At-Regel wird verwendet, um die Tests, die auf einem Container durchgeführt werden, festzulegen, und die Regeln, die auf den Inhalt des Containers angewendet werden, wenn die Abfrage true zurückgibt.

Die Containerabfragetests werden nur auf Elemente mit einer container-type Eigenschaft durchgeführt, die die Elemente als Größen- oder Scroll-Zustandscontainer oder beides definiert.

Container-Größenabfragen

Container-Größenabfragen erlauben Ihnen, CSS-Regeln selektiv auf die Nachfahren eines Containers basierend auf einer Größenbedingung, wie einer maximalen oder minimalen Dimension, einem Seitenverhältnis oder einer Ausrichtung, anzuwenden.

Größencontainer haben darüber hinaus Größeneindämmung, die auf sie angewendet wird – dies schaltet die Fähigkeit eines Elements ab, Größeninformationen von seinem Inhalt zu erhalten, was wichtig für Containerabfragen ist, um Endlosschleifen zu vermeiden. Wäre dies nicht der Fall, könnte eine CSS-Regel innerhalb einer Containerabfrage die Inhaltsgröße ändern, was wiederum die Abfrage dazu veranlassen könnte, false zu evaluieren und die Größe des übergeordneten Elements zu ändern, was wiederum die Inhaltsgröße ändern könnte und die Abfrage zurück zu true schalten könnte, und so weiter. Diese Sequenz würde sich dann in einer endlosen Schleife wiederholen.

Die Größe des Containers muss durch Kontext festgelegt werden, wie Blocklevel-Elemente, die sich über die volle Breite ihres Elternteils erstrecken, oder ausdrücklich definiert werden. Ist keine kontextuelle oder explizite Größe verfügbar, werden Elemente mit Größeneindämmung zusammenbrechen.

Container-Scroll-Zustandsabfragen

Container-Scroll-Zustandsabfragen erlauben Ihnen, CSS-Regeln selektiv auf die Kinder eines Containers basierend auf einer Scroll-Zustandsbedingung anzuwenden, wie:

  • Ob der Inhalt des Containers teilweise gescrollt ist.
  • Ob der Container ein Snap-Ziel ist, das an einen Scroll-Snap-Container geschnappt ist.
  • Ob der Container via position: sticky positioniert ist und an einem Rand eines scrollenden Containers haftet.

Im ersten Fall ist der abgefragte Container der Scroll-Container selbst. In den beiden anderen Fällen ist der abgefragte Container ein Element, das von der Scrollposition eines übergeordneten Scroll-Containers beeinflusst wird.

Beispiele

Festlegung der Inline-Größeneindämmung

Angenommen, das folgende HTML-Beispiel ist eine Kartenkomponente mit einem Bild, einem Titel und etwas Text:

html
<div class="container">
  <div class="card">
    <h3>Normal card</h3>
    <div class="content">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
      tempor incididunt ut labore et dolore magna aliqua.
    </div>
  </div>
</div>

<div class="container wide">
  <div class="card">
    <h3>Wider card</h3>
    <div class="content">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
      tempor incididunt ut labore et dolore magna aliqua.
    </div>
  </div>
</div>

Um einen Container-Kontext zu erstellen, fügen Sie die container-type Eigenschaft zu einem Element hinzu. Das Folgende verwendet den inline-size Wert, um einen Eindämmungskontext für die Inline-Achse des Containers zu erstellen:

css
.container {
  container-type: inline-size;
  width: 300px;
  height: 120px;
}

.wide {
  width: 500px;
}

Das Schreiben einer Containerabfrage über die @container At-Regel wird Stile auf die Elemente des Containers anwenden, wenn dieser breiter als 400px ist:

css
@container (min-width: 400px) {
  .card {
    display: grid;
    grid-template-columns: 1fr 2fr;
  }
}

Spezifikationen

Specification
CSS Conditional Rules Module Level 5
# container-type

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch