Studia przypadków dotyczące zapytań dotyczących kontenerów

Swetha Gopalakrishnan
Swetha Gopalakrishnan
Saurabh Rajpal
Saurabh Rajpal

Zapytania dotyczące kontenerów zapewniają bardzo dynamiczne i elastyczne podejście do projektowania responsywnego. Zapytania dotyczące kontenerów używają reguły @container. Działa ona podobnie do zapytania medialnego z użyciem @media, ale zamiast tego @container wysyła zapytanie do nadrzędnego kontenera w celu uzyskania informacji o stylu zamiast do viewportu i agenta użytkownika.

Zapytania dotyczące kontenera są częścią dostępnej nowo wersji podstawowej.

Obsługa przeglądarek

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 110.
  • Safari: 16.

Źródło

Zapytania o kontenery pozwalają komponentom dostosować się do ich lokalizacji w interfejsie, odpowiadając na rozmiar kontenera. Na przykład element karty może dostosowywać swój rozmiar i style do kontenera, w którym się znajduje, czy to paska boczna, sekcja główna czy siatka w głównej części strony.

Jak widać na ilustracji poniżej, możesz łączyć zapytania dotyczące multimediów w przypadku makrolayoutów, zapytania dotyczące kontenera w przypadku mikrolayoutów oraz zapytania dotyczące multimediów na podstawie preferencji użytkownika, aby tworzyć wydajny system projektowania responsywnego. Dowiedz się więcej o zapytaniach dotyczących kontenerów i nowym responsywnym układzie.

Obraz pokazujący, jak różne typy stylizacji współdziałają ze sobą.
web.dev – nowe elastyczne projektowanie

W tym artykule omawiamy, jak firmy z branży e-commerce ulepszają swoje witryny, korzystając z nowych funkcji CSS i interfejsu. Tym razem przyjrzymy się temu, jak niektóre firmy korzystały z zapytań dotyczących kontenerów i jak przyniosło im to korzyści.

redBus

redBus obsługuje i serwuje inny kod w wersjach na urządzenia mobilne i komputery. Po wdrożeniu zapytań kontenerowych na stronach Things-to-do i cargo firma mogła scalić ten kod w jedną bazę kodu dla tych witryn. Dzięki temu są one responsywne i oszczędzają czas poświęcany na rozwój. Poniższy przykład pokazuje to na przykładzie strony ładunku:

Kod

W tym przykładzie .bpdpCardWrapper jest kontenerem nadrzędnym o nazwie bpdpSection.

Jeśli kontener bpdpSection ma minimalną szerokość 744 pikseli, wartości font-size i line-height komponentów wybranych przez .bpdpCardContainer i .subTxt, .bpdpAddress zostaną zaktualizowane.

//Code for Container Queries
.bpdpCardWrapper {
   container-type: inline-size;
   container-name: bpdpSection;
}
@container bpdpSection (min-width: 744px){
   .bpdpCardContainer{
      font-size: 1rem;
      line-height: 1.5rem;
   }

   .subTxt, .bpdpAddress{
       font-size: 0.875rem;
       line-height: 1.25rem;
   }
}

Wpływ

Przed (podstawa wielu kodów) Po (pojedyncza baza kodu)
Infrastruktura Oddzielna infrastruktura (wysokie koszty). Ta sama infrastruktura (niższe koszty).
Projektowanie Oddzielne interfejsy, ale słaba spójność. Trudne do rozwiązania, ale możliwe.
Wyniki Jest łatwy w obsłudze, ponieważ jest oddzielnym systemem, ale powiela wysiłek w celu poprawy wydajności. Jest to kwestia specyficzna dla strony i funkcji, ale wynik redBusa w PageSpeedInsights wynosi ponad 80.
Programowanie oddzielne zespoły programistów, Skrócenie czasu o 30–40%.

Tokopedia

Strony ze szczegółami produktów (PDP) w Tokopedia zawierają wiele kart z informacjami o sklepie i produkcie. Wcześniej układ tej strony był podzielony na 3 kolumny, a czasami nazwa produktu po lewej stronie była przycinana na mniejszych rozmiarach ekranu (patrz film „Wcześniej”).

Aby rozwiązać ten problem z układem, zespół szybko i łatwo wdrożył zapytania dotyczące kontenera. Po wdrożeniu tej funkcji firma mogła korzystać z elastycznego układu, w którym nazwa produktu była zawsze w pełni widoczna (patrz film „Po” poniżej).

Przed

Przed wdrożeniem zapytań dotyczących kontenerów słowa „ISKU 10 in 1 Obengsatu..” w lewym górnym rogu są obcinane na mniejszych ekranach.

Po

Wdrażanie zapytań dotyczących kontenera dostosowuje układ, zachowując tekst w widocznym obszarze.

Kod

Podany niżej kod wysyła zapytanie o rozmiar kontenera nadrzędnego o nazwie infowrapper. Jeśli maksymalna szerokość infowrapper wynosi 360 pikseli, komponenty podrzędne width, margin,padding zostaną dopasowane.

Ustawienie container-type na inline-size wysyła zapytanie o rozmiar kierunku w dokumencie elementu nadrzędnego. W przypadku języków łacińskich, takich jak angielski, będzie to szerokość nadrzędnego kontenera, ponieważ tekst jest wyrównany do lewej.

export const styCredibilityContainer = css`
  container-name: infowrapper;
  container-type: inline-size;
`;

export const styBtnShopFollow = css`
  margin-left: auto;
  width: 98px;
  @container infowrapper (max-width: 360px) {
    width: 100%;
    margin-top: 2px;
    margin-bottom: 8px;
    padding-left: 60px;
  }
`;

export const styBottomRow = css`
  margin-top: 4px;
  padding-left: 60px;
  display: flex;
  align-items: center;

  @container infowrapper (max-width: 360px) {
    padding-left: 0px;
  }

  > div {
    text-align: left;
    margin-top: 0 !important;
  }
`;

Co wziąć pod uwagę podczas korzystania z zapytań dotyczących kontenerów

Tokopedia znalazła w swojej witrynie wielokropek tekstu, aby znaleźć swój przypadek użycia. Wskazano kontenery, które mogą być za małe, przez co treści są przycinane dla użytkownika.

Innym przydatnym zastosowaniem zapytań dotyczących kontenerów w przypadku witryn e-commerce jest sprawdzanie, czy nie ma w nich ponownie użytych komponentów. Na przykład przycisk Dodaj do koszyka może być wyświetlany inaczej w zależności od nadrzędnego kontenera (np. tylko ikona, jeśli znajduje się na karcie produktu, oraz ikona z tekstem, jeśli jest to główny przycisk wezwania do działania na stronie). Przycisk może być dobrym kandydatem na zapytanie dotyczące kontenera.

Możesz stopniowo ulepszać swoją witrynę. Możesz na przykład zacząć od mniejszych przypadków użycia, takich jak przykład elipsy z Tokopedia, i wdrożyć tam zapytania dotyczące kontenera. Następnie stopniowo znajduj więcej przypadków i ulepszaj usługę porównywania cen.

Zasoby:

Zapoznaj się z innymi artykułami z tej serii, aby dowiedzieć się, jak firmy e-commerce korzystały z nowych funkcji CSS i interfejsu, takich jak animacje sterowane przewijaniem, wyskakujące okienka, zapytania kontenera i selektor has().