Tu się pomaga

Ułatwienie tworzenia aplikacji internetowych.

Gdy rozmawiamy z deweloperami, indywidualnie lub w ramach ankiet, takich jak State of CSS, słyszymy te same rzeczy. Deweloperzy mają problemy z tworzeniem stron internetowych i aplikacji, które dobrze działają w różnych przeglądarkach, oraz z ustaleniem, kiedy nowe funkcje są bezpieczne w użyciu.

Przerwa w flexboxie

Przykładem problematycznej usługi jest usługa gap, która umożliwia tworzenie przerw między elementami siatki lub flex oraz kolumnami w kontenerze multicol. Chociaż usługa column-gap była już od dawna dostępna w wielu kolumnach, to w układzie siatki pojawiła się dopiero jako grid-gap, wraz z usługami grid-column-gapgrid-row-gap.

Zaraz po wprowadzeniu układu siatki do przeglądarek nazwa tej właściwości została zmieniona na gap, podobnie jak nazwy row-gapcolumn-gap. Następnie określono, że ma ona działać również w układzie elastycznym. Zmiana nazwy oznacza, że nie mamy wielu usług, które robią to samo.

.box {
  display: flex;
  gap: 1em;
}

W październiku 2018 r. przeglądarka Firefox otrzymała tę funkcję w przypadku układów elastycznych. W Chrome pojawiła się dopiero w lipcu 2020 r., a w Safari dopiero w kwietniu 2021 r. Minęły 2 lata i 6 miesięcy, zanim mogliśmy bezpiecznie korzystać z gap. W rzeczywistości większość deweloperów musiała czekać znacznie dłużej, ponieważ musiała obsługiwać starsze wersje przeglądarek niż najnowsza. Obsługa gap w elastycznym układzie jest trudniejsza, ponieważ nie możemy używać zapytań dotyczących funkcji do wykrywania obsługi przerw w elastycznym układzie. Właściwość gap jest obsługiwana w siatce, więc @supports (gap:1em) zwróci wartość true.

Dodatkowym problemem jest to, że gdy nowa funkcja pojawi się w jednej przeglądarce, użytkownicy zaczynają o niej mówić i udostępniać prezentacje. Często zaczyna się to na długo przed tym, zanim funkcja zostanie wdrożona w stabilnej wersji przeglądarki. Może to wprowadzać w błąd deweloperów lub przynajmniej być dla nich frustrujące. Wszędzie mówi się o nowych, świetnych funkcjach, a potem okazuje się, że nie można ich używać z powodu braku obsługi.

Dlaczego brakuje wsparcia?

Nie jest to post, w którym wskazujemy na jedną przeglądarkę jako na wolną. Jeśli przyjrzysz się funkcjom różnych platform, zauważysz, że w różnych przypadkach czołówkę zajmują różne przeglądarki.

Większość funkcji zostanie zaprototypowana w jednej przeglądarce. Na przykład specyfikacja układu siatki została po raz pierwszy stworzona przez firmę Microsoft i wprowadzona w pierwszej formie w Internet Explorerze 10. Inżynier z Mozilla włożył wiele pracy w określenie sposobu działania subgridu, dlatego ta funkcja została najpierw wprowadzona do Firefoksa. Widzimy, że Safari wyprzedza konkurencję pod względem nowych funkcji związanych z kolorami.

Podczas tworzenia prototypów może brać udział jedna przeglądarka, ale przedstawiciele wszystkich przeglądarek (i innych organizacji) w ramach grupy roboczej CSS omawiają funkcje CSS. Bardzo ważne jest, aby funkcja mogła być implementowana we wszystkich przeglądarkach i nie była zaprojektowana w taki sposób, aby jej wdrożenie było niemożliwe w jednej z nich. Spowodowałoby to trwałą lukę w obsługiwanych funkcjach i ograniczyło stosowanie tej funkcji.

W przypadku wdrażania funkcji należy jednak nadać jej priorytet wśród wszystkich innych funkcji w danej przeglądarce. Czasami też wstrzymujemy wprowadzanie zmian, ponieważ wymagają one innych działań, które muszą zostać wykonane, aby poprawić przeglądarkę. Doskonałym przykładem jest praca nad RenderingNG w Chromium. To otworzyło drogę do wdrożenia subgridu, ale długa przerwa między wersjami Firefoxa i Chromium wynika z konieczności ponownego zaimplementowania układu siatki w nowym silniku renderowania.

Problemy

Mamy dwa problemy. Pierwszą z nich jest problem interoperacyjności – od momentu umieszczenia funkcji w jednej przeglądarce do momentu, w którym stanie się ona dostępna wszędzie, minie bardzo dużo czasu.

Drugi to problem z wiadomościami. Jak możemy wyraźnie wskazać luki w obsługiwaniu? Jak możemy udostępniać nowe funkcje bez zmuszania wszystkich do dokładnego zapoznania się z każdą z nich, aby określić, jak dobrze są one wspierane?

Interoperacyjność

Przeglądarki wspólnie pracują nad rozwiązaniem tego problemu ze współpracą. W zeszłym roku Compat 2021 pozwolił na uzupełnienie obsługi niektórych funkcji, w tym właściwości odstępu w układzie elastycznym. W tym roku Interop 2022 skupia się na 15 funkcjach, a niektóre z nich są już w trakcie wdrażania.

Postępy możesz śledzić w panelu Interop 2022.

Wiadomości

Drugi problem, w którym chętnie Ci pomożemy, dotyczy funkcji na web.dev i developer.chrome.com. Chcemy, aby stan funkcji był naprawdę jasny, gdy czytasz nasze treści, oraz abyśmy mogli zapewnić praktyczne sposoby rozwiązywania problemów.

Wprowadziliśmy już kilka podstawowych szkoleń, a wkrótce pojawią się kolejne. Te kursy pomogą Ci nauczyć się tworzenia aplikacji internetowych przy użyciu podstawowych technologii platformy internetowej. Wymeldowanie:

Pracujemy nad tym, aby treści na tej stronie dotyczyły tych, z których można bezpiecznie korzystać. Nie jesteśmy jeszcze na tym etapie, ale w najbliższych miesiącach zaczniesz dostrzegać pewne zmiany w tym zakresie.

Wspieramy też dokumentację otwartej sieci, wspierając projekt Open Web Docs. Dzięki temu mamy najwyższej klasy dokumentację dotyczącą MDN oraz aktualne dane dotyczące zgodności z przeglądarkami. Następnie wykorzystujemy te dane na web.dev, aby dać Ci pewność, że obsługujesz poszczególne funkcje. Oto obecna obsługa funkcji gap w układzie elastycznym.

Obsługa przeglądarek

  • Chrome: 84.
  • Edge: 84.
  • Firefox: 63.
  • Safari: 14.1.

Jeśli chcesz dowiedzieć się więcej o wizji Chrome dotyczącej internetu, czyli o tym, nad czym eksperymentujemy w wersjach próbnych origin i deweloperów, znajdziesz te treści na naszej siostrzanej stronie developer.chrome.com. Może ona być eksperymentalna lub obsługiwana tylko w Chrome, ale chętnie zapoznamy się z nią i przekażemy Ci swoją opinię.

To naprawdę ekscytujący czas dla internetu. Mamy nadzieję, że uda nam się szybciej udostępnić Ci najważniejsze funkcje i wyjaśnić, jakie luki jeszcze występują, dzięki czemu tworzenie stron internetowych będzie przyjemniejsze i mniej frustrujące.

Fot. Cristofer Maximilian.