CSS @container
La regola CSS @container in CSS4 consente layout reattivi basati sui contenitori
La direttiva @container
è introdotta in CSS4 con le Container Queries. A differenza delle media queries, che reagiscono alla dimensione della finestra, @container
permette di adattare lo stile in base alla dimensione del contenitore genitore. Questo rende i componenti più riutilizzabili e modulari nei layout complessi.
Sintassi
Esempi di sintassi corretta:
@container (min-width: 600px): applica le regole se il contenitore è largo almeno 600px.
@container sidebar (max-width: 400px): applica regole a un contenitore nominato
sidebar
solo se largo al massimo 400px.
Tipi di query supportate:
- width / height: come nelle media queries.
- inline-size / block-size: per layout più flessibili (es. verticali).
- aspect-ratio, orientation, resolution (meno usati, ma supportati).
Nota: Il contenitore deve avere impostato container-type
per poter usare @container
.
Esempio Direttiva: @container
Codice Esempio: @container

.card-wrapper {
container-type: inline-size;
width: 100%;
max-width: 800px;
border: 2px solid #ccc;
padding: 1rem;
}
.card {
background: #f5f5f5;
padding: 1rem;
font-size: 16px;
border-radius: 8px;
text-align: center;
}
@container (min-width: 600px) {
.card {
display: flex;
justify-content: space-between;
font-size: 20px;
background: #d4edda;
}
}
Contenuto Esempio: @container
Esempio di utilizzo di @container
Questo esempio mostra come un componente si adatta in base alla larghezza del suo contenitore:
CSS e HTML per il contenitore reattivo:
<style>
.card-wrapper {
container-type: inline-size;
width: 100%;
max-width: 800px;
border: 2px solid #ccc;
padding: 1rem;
}
.card {
background: #fff;
padding: 1rem;
font-size: 16px;
border-radius: 8px;
text-align: center;
}
@container (min-width: 600px) {
.card {
display: flex;
justify-content: space-between;
font-size: 20px;
background: #d4edda;
}
}
</style>
<div class="card-wrapper">
<div class="card">
Questo contenuto cambia layout se il contenitore supera i 600px di larghezza.
</div>
</div>
Note:
Le indicazioni dei Browser supportati sono superate grazie alla loro costante evoluzione, si consiglia di verificare la compatibilità dei vari browser eseguendo il test cliccando qui sotto.