container - CSS: Cascading Style Sheets | MDN (original) (raw)

Newly available

The container shorthand CSS property establishes the element as a query container and specifies the name and type of the containment context used in a container query.

Constituent properties

This property is a shorthand for the following CSS properties:

Syntax

/* <container-name> */
container: my-layout;

/* <container-name> / <container-type> */
container: my-layout / size;

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

Values

A case-sensitive name for the containment context. More details on the syntax are covered in the container-name property page.

The type of containment context. More details on the syntax are covered in the container-type property page.

Formal definition

Initial value as each of the properties of the shorthand:container-name: nonecontainer-type: normal
Applies to all elements
Inherited no
Percentages as each of the properties of the shorthand:container-name: nocontainer-type: no
Computed value as each of the properties of the shorthand:container-name: none or an ordered list of identifierscontainer-type: as specified
Animation type as each of the properties of the shorthand:container-name: Not animatablecontainer-type: a color

Formal syntax

container =
<'container-name'> / <'container-type'> []?

=
none |
+

=
normal |
[ size | inline-size [] || scroll-state []](/en-US/docs/Web/CSS/CSS%5FValues%5Fand%5FUnits/Value%5Fdefinition%5Fsyntax#brackets "Brackets: enclose several entities, combinators, and multipliers to transform them as a single component")

Examples

Establishing inline size containment

Given the following HTML example which is a card component with an image, a title, and some text:

<div class="post">
  <div class="card">
    <h2>Card title</h2>
    <p>Card content</p>
  </div>
</div>

The explicit way to create a container context is to declare a container-type with an optional container-name:

.post {
  container-type: inline-size;
  container-name: sidebar;
}

The container shorthand is intended to make this simpler to define in a single declaration:

.post {
  container: sidebar / inline-size;
}

You can then target that container by name using the @container at-rule:

@container sidebar (min-width: 400px) {
  /* <stylesheet> */
}

Specifications

Specification
CSS Conditional Rules Module Level 5 # container-shorthand

Browser compatibility

See also