Container Queries
⚡ TL;DR
- Before: base element style based on class OR viewport
- Now: style based on its OWN width
🧪 Experiment
auto-adjust card based on its own width & height (not viewport)
.container-query-demo-1 .wrapper {
container-type: inline-size;
container-name: card;
}
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
@container card (max-width: 600px) {
.container-query-demo-1 .card {
grid-template-columns: 1fr 1fr;
grid-template-areas:
"title title"
"author author-name"
"text-1 text-2"
"read-more read-more";
}
.container-query-demo-1 .image {
display: none;
}
}
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
@container card (max-width: 350px) {
.container-query-demo-1 .card {
grid-template-columns: 1fr 1fr;
grid-template-areas:
"title title"
"author author-name"
"text-1 text-1"
"text-2 text-2"
"read-more read-more";
}
}
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
La génisse, la chèvre et leur sœur la brebis,
Avec un fier lion, seigneur du voisinage,
Firent société, dit-on, au temps jadis,
Et mirent en commun le gain et le dommage.
Dans les lacs de la chèvre un cerf se trouva pris.
Vers ses associés aussitôt elle envoie.
Eux venus, le lion par ses ongles compta,
Et dit : « Nous sommes quatre à partager la proie. »
Puis en autant de parts le cerf il dépeça,
Prit pour lui la première en qualité de sire :
« Elle doit être à moi, dit-il, et la raison,
C'est que je m'appelle Lion :
À cela l'on n'a rien à dire.
La seconde par droit me doit échoir encor :
Ce droit, vous le savez, c'est le droit du plus fort.
Comme le plus vaillant je prétends la troisième.
Si quelqu'une de vous touche à la quatrième,
Je l'étranglerai tout d'abord. »
.container-query-demo-1 .container-3 .wrapper {
container-type: size;
container-name: card-size;
}
@container card-size (max-height: 500px) {
.container-query-demo-1 .card {
grid-template-columns: 1fr 1fr;
grid-template-areas:
"title title"
"author author-name"
"text-1 text-1"
"read-more read-more";
}
:is(.text-1, .text-2) p {
display: none;
}
.container-query-demo-1 .text-1 :is(p:nth-child(1), p:nth-child(2)) {
display: block;
}
.container-query-demo-1 .image {
display: none;
}
.container-query-demo-1 .container .read-more {
display: block;
}
}
🤔 Opinion
- Can thrown Resizing Observer to the trash bin 🚮
- Amazing especially when building components meant to be used in context out of your hands (e.g. building things for CMS where editors build themselves their UI, or .... Design Systems 😉
- Not enough support yet for production
- So far, found it hard the 'container-type: inline-size;'VS 'container-type: size;'