consdata.com
Blog techniczny Blog biznesowy Dział HR
EN
css

Czy wiesz, czym są container queries?

author Piotr Tatarski
23 sierpnia 2024

Container queries to mechanizm analogiczny do media queries, działający na elementach DOM, a nie parametrach przeglądarki. Pozwala odpytać o parametry kontenera i ostylować zawarty w nim element zgodnie z tymi parametrami.

Aby oznaczyć element jako kontener, należy ustawić regułę container-type. Do dyspozycji mamy 3 wartości:

  • size - podczas stylowania względem tego kontenera będzie brana zarówno szerokość jak i wysokość elementu oraz jego style,
  • inline-size - podczas stylownia będzie brany pod uwagę tylko wymiar inline-size (czyli szerokość przy domyślnie ustawionym writing-mode),
  • normal - podczas stylowania będą brane pod uwagę jedynie style kontenera.

Mając tak zdefiniowaną strukturę HTML:

<div class="container">
    <div class="intermediate-container">
        <div class="box"></div>
    </div>
</div>

oraz następujące style CSS:

.container {
  container-type: size;
  height: 500px;
  width: 75vw;
  background: yellowgreen;
}
 
.box {
  height: 100px;
  width: 100px;
  background: yellow;
}

element .box może zostać ostylowany względem aktualnej szerokości kontenera. Przykładowo:

@container parent (min-width: 400px) {
  .box {
    background: red;
  }
}

W tym przypadku, jeśli kontener będzie większy niż 400px, element box pozostanie żółty. Jeśli kontener będzie szerszy, kolor elementu box zmieni się na czerwony.

Co jeżeli mamy wiele zagnieżdżonych kontenerów i chcemy odwołać się do któregoś konkretnego?

Domyślnie pod uwagę brany jest kontekst najbliższego kontenera, jednak można to zmienić poprzez ustawienie reguły container-name z wybraną nazwą kontenera. Przykładowo:

.container {
  container-type: size;
  container-name: parent-container
}
 
@container parent-container (min-width: 700px) {
    /* ... */
}

Dzięki tej regule możemy odwoływać się do kontenerów, które są wyżej niż najbliższy naszemu elementowi.

Przykład w wersji wykonywalnej: https://codesandbox.io/s/css-container-queries-complete-example

Najnowsze wpisy

  • Dostępność w PDF - dokumenty bez barier
  • Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?
  • Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA

newsletter

techniczny

Zapisz się

Podobne wpisy

post-image
WCAG

Dostępność w PDF - dokumenty bez barier

author
Kacper Hoffman 28 kwi 2025
post-image
angular

Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?

author
Piotr Tatarski 7 kwi 2025
post-image
angular

Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?

author
Dorian Mejer 10 mar 2025
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA

Zapisz się na

newsletter

techniczny

consdata.com
  • Kontakt

    • sales@consdata.com
    • +48 61 41 51 000

  • Biuro

    • K9Office
      Krysiewicza 9/14
      61-825 Poznań
      Polska

  • Rozwiązania

    • Eximee
    • Kouncil
  • Blog Dołącz do nas
Copyright © 2024 Consdata. All rights reserved. Privacy Policy & Cookies
Chcemy używać plików cookie oraz skryptów podmiotów trzecich do polepszania funkcjonowania tej strony Zgadzam się