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-gap
i grid-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-gap
i column-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
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.