CSS: 2023 r.

Nagłówek ujęty w ramki przez usługę porównywania cen

CSS Wrapped: 2023

Niesamowite! Rok 2023 był dla CSS bardzo ważny.

Od #Interop2023 po wiele nowych stron w kategorii CSS i UI, które umożliwiają korzystanie z funkcji, które deweloperzy uważali kiedyś za niemożliwe na platformie internetowej. Obecnie każda nowoczesna przeglądarka obsługuje zapytania dotyczące kontenera, subgrid, selektor :has() oraz całą gamę nowych przestrzeni i funkcji kolorów. W Chrome obsługujemy animacje sterowane przewijaniem oparte wyłącznie na CSS oraz płynne animacje między widokami za pomocą przejść między widokami. Co więcej, pojawiło się wiele nowych prymitywów, które ułatwiają pracę deweloperom, np. zagnieżdżanie CSS-ustyl skodyfikowany.

Co to był za rok! Dlatego kończymy ten przełomowy rok, aby uczcić i docenić ciężką pracę deweloperów przeglądarek oraz całej społeczności internetowej, dzięki której wszystko to było możliwe.

Podstawy architektoniczne

Zacznijmy od zmian w podstawowym języku CSS i jego możliwościach. To funkcje, które stanowią podstawę tworzenia i organizowania stylów oraz zapewniają deweloperom dużą swobodę działania.

Funkcje trygonometryczne

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 108.
  • Safari: 15.4.

Source

Chrome 111 dodaje obsługę funkcji trygonometrycznych sin(), cos(), tan(), asin(), acos(), atan()atan2(), udostępniając je we wszystkich głównych silnikach. Te funkcje są bardzo przydatne do tworzenia animacji i układów. Teraz łatwiej jest na przykład rozmieszczać elementy w kółku wokół wybranego środka.

Funkcje trygonometryczne – prezentacja

Dowiedz się więcej o funkcjach trygonometrycznych w CSS.

Zaznaczenie złożone n-ty*

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 9.

Za pomocą selektora pseudoklasy :nth-child() można wybierać elementy w DOM według ich indeksu. Dzięki mikroskładnikom An+B możesz dokładnie określić, które elementy chcesz wybrać.

Domyślnie pseudoelementy :nth-*() uwzględniają wszystkie elementy podrzędne. Od wersji 111 Chrome możesz opcjonalnie przekazywać listę selektorów do funkcji :nth-child():nth-last-child(). W ten sposób możesz wstępnie odfiltrować listę dzieci, zanim An+B wykona swoje zadanie.

W tym pokazie logika 3n+1 jest stosowana tylko do małych lalek, które są wstępnie odfiltrowywane za pomocą funkcji of .small. Aby dynamicznie zmienić używany selektor, użyj menu.

Demo wyboru złożonego n-*

Dowiedz się więcej o kompleksowych wyborach typu n-ty*.

Zakres

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: behind a flag.
  • Safari: 17.4.

Source

W Chrome 118 dodano obsługę @scope, czyli reguły at, która umożliwia ograniczenie dopasowywania selektora do określonego poddrzewa dokumentu. Dzięki stylizacji ograniczonej do zakresu możesz dokładnie określić, które elementy chcesz wybrać, bez konieczności pisania zbyt szczegółowych selektorów lub ścisłego łączenia ich ze strukturą DOM.

Poddrzewo ograniczone jest zdefiniowane przez węzeł ograniczający (górna granica) i opcjonalny limit ograniczający (dolna granica).

@scope (.card) {  } /* scoping root */
@scope (.card) to (.card__content) {  } /* scoping root + scoping limit*/

Reguły stylów umieszczone w bloku zakresu będą kierowane tylko do elementów w wyodrębnionym poddrzewie. Na przykład poniższa reguła stylu ograniczona do zakresu obejmuje tylko elementy <img>, które znajdują się między elementem .card a dowolnym zagnieżżonym komponentem zgodnym z selektorem [data-component].

@scope (.card) to ([data-component]) {
  img {  }
}

W tym pokazie elementy <img> w komponencie karuzeli nie są dopasowywane ze względu na zastosowany limit zakresu.

Więcej informacji o @scope znajdziesz w artykule „Jak za pomocą @scope ograniczyć zasięg selektorów”. Z tego artykułu dowiesz się więcej o selektorze :scope, sposobie obsługi specyficzności, zakresach bez wstępu i wpływie @scope na kaskadę.

Umieszczanie

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 117.
  • Safari: 17.2.

Source

Przed zagnieżcheniem każdy selektor musiał być zadeklarowany oddzielnie od pozostałych. Powoduje to powtarzanie się elementów, gromadzenie się stylów i rozproszenie treści. Teraz selektory mogą być kontynuowane za pomocą powiązanych reguł stylów zgrupowanych w ramach.

dl {
  /* dt styles */
  
  dt {
    /* dl dt styles */
  }

  dd {
    /* dl dd styles */
  }
}

/* same as */
dt {
  /* dt styles */
}

dl dt {
  /* dl dt styles */
}

dl dd {
  /* dl dd styles */
}
Zmień selektor łagodnego zagnieżdżenia, aby wybrać zwycięzcę wyścigu

Umieszczanie w ramce może zmniejszyć rozmiar arkusza stylów, ograniczyć nadmiar selektorów powtarzających się elementów oraz scentralizować style komponentów. Początkowo ta składnia została wydana z ograniczeniem wymagającym użycia & w różnych miejscach, ale to ograniczenie zostało zniesione dzięki zaktualizowanej składni z łatwiejszego zagnieżdżania.

Dowiedz się więcej o zagnieżdżaniu.

Subgrid

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 71.
  • Safari: 16.

Source

CSS subgrid umożliwia tworzenie bardziej złożonych siatek z lepszym wyrównaniem układów podrzędnych. Umożliwia to siatce, która znajduje się wewnątrz innej siatki, przyjęcie wierszy i kolumn zewnętrznej siatki jako własnych, używając wartości subgrid jako wartości wierszy lub kolumn siatki.

Nagłówek, tekst i stopka dostosowują się do dynamicznych rozmiarów swoich elementów równorzędnych.

Subgrid jest szczególnie przydatny do dopasowywania elementów siostrzanych do ich dynamicznych treści. Dzięki temu copywriterzy, autorzy treści UX i tłumacze nie muszą już tworzyć kopii projektu, która „pasuje” do układu. Dzięki siatce szczegółowej układ można dostosować do treści.

Dowiedz się więcej o subgridzie.

Typografia

W 2023 r. wprowadziliśmy kilka ważnych zmian w typografii internetowej. Szczególnie warte uwagi jest pole text-wrap. Ta właściwość umożliwia dostosowanie układu typograficznego w przeglądarce bez konieczności tworzenia dodatkowych skryptów. Zapomnij o nieporęcznych długościach linii i przygotuj się na bardziej przewidywalną typografię.

Pierwsza litera

Browser Support

  • Chrome: 110.
  • Edge: 110.
  • Firefox: not supported.
  • Safari: 9.

Source

Na początku roku w Chrome 110 pojawiła się właściwość initial-letter, która jest niewielką, ale potężną funkcją CSS, która określa styl umieszczania liter początkowych. Litery możesz ustawić w pozycji obniżonej lub podniesionej. Właściwość ta przyjmuje 2 argumenty: pierwszy określa, jak głęboko ma być wstawiona litera w odpowiednim akapicie, a drugi – o ile litera ma być podniesiona nad akapit. Możesz też połączyć oba te rozwiązania, jak w tym filmie demonstracyjnym.

Zrzut ekranu pokazujący wersję demonstracyjną funkcji początkowej litery
Zmieniaj wartości initial-letter dla pseudoelementu ::first-letter, aby obserwować zmiany.

Dowiedz się więcej o initial-letter.

text-wrap: balance and pretty

Jako programista nie znasz ostatecznego rozmiaru, rozmiaru czcionki ani nawet języka nagłówka lub akapitu. Wszystkie zmienne potrzebne do efektywnego i estetycznego łamania tekstu znajdują się w przeglądarce. Przeglądarka zna wszystkie czynniki, takie jak rozmiar czcionki, język i przydzielone miejsce, co sprawia, że jest idealnym narzędziem do obsługi zaawansowanego układu tekstu o wysokiej jakości.

Właśnie w tym celu służą 2 nowe techniki przenoszenia tekstu: balancepretty. Wartość balance ma na celu tworzenie spójnego bloku tekstu, a wartość pretty ma zapobiegać występowaniu znaków samotnych oraz zapewniać prawidłowe dzielenie wyrazów. Oba te zadania były tradycyjnie wykonywane ręcznie, więc to wspaniałe, że można je zlecić przeglądarce i że działa ona w przypadku dowolnego przetłumaczonego języka.

W tym pokazie możesz porównać efekty balance i pretty na nagłówku oraz akapicie, przesuwając suwak. Spróbuj przetłumaczyć wersję demonstracyjną na inny język.

Dowiedz się więcej o text-wrap: balance.

Kolor

Rok 2023 był rokiem kolorów na platformie internetowej. Dzięki nowym przestrzeniom barw i funkcjom, które umożliwiają dynamiczne motywy kolorów, możesz tworzyć żywe, bogate motywy, na które zasługują użytkownicy, a także je dostosowywać.

Kolory HD (poziom kolorów 4)

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Od sprzętu do oprogramowania, od CSS do migających świateł – nasze komputery muszą wykonać wiele pracy, aby odwzorować kolory tak dobrze, jak widzi je ludzkie oko. W 2023 r. wprowadziliśmy nowe kolory, więcej kolorów, nowe przestrzenie barw, funkcje kolorów i nowe możliwości.

CSS i kolory mogą teraz: – Sprawdzać, czy sprzęt użytkownika obsługuje kolory HDR o szerokiej gamie. – Sprawdź, czy przeglądarka użytkownika obsługuje składnię kolorów, np. Oklch lub Display P3. – Określ kolory HDR w modelach Oklab, Oklch, HWB, Display P3, Rec.2020, XYZ i innych. – tworzyć gradienty z kolorami HDR, – interpolować gradienty w alternatywnych przestrzeniach kolorów. – Mieszanie kolorów za pomocą color-mix(). – tworzenie wariantów kolorów za pomocą względnej składni kolorów;

W tym pokazie możesz porównać efekty zastosowania opcji „balance” i „pretty” na nagłówku oraz akapicie, przeciągając suwak. Spróbuj przetłumaczyć wersję demonstracyjną na inny język.

Dowiedz się więcej o kolorach 4 i przestrzeniach barw.

Funkcja color-mix

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 16.2.

Source

Mieszanie kolorów to klasyczne zadanie, które w 2023 r. będzie można wykonywać w CSS. Możesz nie tylko mieszać kolory z białym lub czarnym, ale też z przeźroczystością, i to w dowolnej przestrzeni barw. Jest to jednocześnie funkcja kolorów podstawowych i zaawansowanych.

Demo pozwala wybrać 2 kolory za pomocą selektora kolorów, przestrzeń barw i procentowy udział każdego koloru w miksie.

color-mix() można traktować jako moment w gradientzie. Gradient pokazuje wszystkie kroki potrzebne do przejścia od koloru niebieskiego do białego, a color-mix() tylko jeden krok. Gdy zaczniesz uwzględniać przestrzenie kolorów, zacznie się robić ciekawie. Dowiesz się, jak bardzo mieszanie przestrzeni kolorów może wpływać na wyniki.

Dowiedz się więcej o funkcji color-mix().

Składnia koloru względnego

Składnia kolorów względnych (RCS) to uzupełnienie metody color-mix() służące do tworzenia wersji kolory. Jest on nieco bardziej zaawansowany niż color-mix(), ale też wykorzystuje inną strategię pracy z kolorami. color-mix() może mieszać kolor biały, aby rozjaśnić kolor, a RCS zapewnia precyzyjny dostęp do kanału jasności i możliwość korzystania z calc() na tym kanale w celu zmniejszenia lub zwiększenia jasności w sposób programowy.

Zmieniaj kolory i sceny. Każdy z nich używa składnika koloru względnego do tworzenia wariantów na podstawie koloru podstawowego.

RCS umożliwia wykonywanie względnych i bezwzględnych manipulacji kolorem. Zmiana względna polega na tym, że bierze się bieżącą wartość nasycenia lub jasności i modyfikuje ją za pomocą calc(). Zmiana bezwzględna to taka, w której zastępujesz wartość kanału zupełnie nową, np. ustawiasz przezroczystość na 50%. Ta składnia udostępnia przydatne narzędzia do tworzenia motywów, wariantów na czas i innych rozwiązań.

Dowiedz się więcej o względnej składni kolorów.

Elastyczne projektowanie

Elastyczne projektowanie witryn ewoluowało w 2023 r. W tym przełomowym roku udostępniliśmy nowe funkcje, które całkowicie zmieniły sposób tworzenia responsywnych stron internetowych, i wprowadziliśmy nowy model responsywnego projektowania opartego na komponentach. Połączenie zapytań dotyczących kontenera i :has() umożliwia obsługę komponentów, które mają własne elastyczne i logiczne style na podstawie rozmiaru ich elementu nadrzędnego, a także obecności lub stanu ich elementów podrzędnych. Oznacza to, że możesz w końcu oddzielić układ na poziomie strony od układu na poziomie komponentu i raz napisać logikę, aby używać komponentu wszędzie.

Zapytania dotyczące kontenera z rozmiarami

Browser Support

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

Source

Zamiast stosować do stylów CSS informacje o globalnym rozmiarze widoku, zapytania kontenera umożliwiają zapytanie elementu nadrzędnego na stronie. Oznacza to, że komponenty mogą być stylizowane dynamicznie w wielu układach i widokach. W dniu Walentynek (14 lutego) tego roku zapytania dotyczące rozmiaru kontenera stały się stabilne we wszystkich nowoczesnych przeglądarkach.

Aby korzystać z tej funkcji, najpierw skonfiguruj ograniczenie dla elementu, którego dotyczy zapytanie, a następnie, podobnie jak w przypadku zapytania o media, użyj @container z parametrami rozmiaru, aby zastosować style. Wraz z zapytaniami w kontenerze otrzymujesz rozmiary zapytań w kontenerze. W tej prezentacji rozmiar zapytania kontenera cqi (reprezentujący rozmiar kontenera wbudowanego) jest używany do określenia rozmiaru nagłówka karty.

Dowiedz się więcej o używaniu zapytań dotyczących kontenerów.

Zapytania dotyczące kontenera stylów

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: not supported.
  • Safari: 18.

Zapytania dotyczące stylów zostały częściowo zaimplementowane w Chrome 111. W przypadku zapytań dotyczących stylów możesz obecnie wysyłać zapytania o wartość właściwości niestandardowych w elemencie nadrzędnym, gdy używasz @container style(). Możesz na przykład sprawdzić, czy istnieje wartość właściwości niestandardowej lub czy jest ona ustawiona na określoną wartość, np. @container style(--rain: true).

Zrzut ekranu pokazujący karty pogodowe w zapytaniach do kontenera
Zmieniaj kolory i sceny. Każdy z nich używa składnika koloru względnego do tworzenia wariantów na podstawie koloru podstawowego.

Chociaż brzmi to podobnie do używania nazw klas w CSS, zapytania o styl mają pewne zalety. Po pierwsze, za pomocą zapytań o style możesz w razie potrzeby aktualizować wartość w CSS w celu tworzenia pseudostanów. W przyszłych wersjach implementacji będzie można też wysyłać zapytania o zakresy wartości, aby określić zastosowany styl (np. style(60 <= --weather <= 70)), oraz styl na podstawie pary „właściwość–wartość” (np. style(font-style: italic)).

Dowiedz się więcej o używaniu zapytań dotyczących stylów.

:has()

Browser Support

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 121.
  • Safari: 15.4.

Source

Od prawie 20 lat programiści prosili o wprowadzenie w CSS „selekcjonera nadrzędnego”. Jest to możliwe dzięki selektorowi :has(), który został wprowadzony w Chrome 105. Na przykład użycie .card:has(img.hero) spowoduje wybranie elementów .card, które mają element podrzędny .card.

Zrzut ekranu pokazujący przykład użycia funkcji :has()
CSS :has()demonstracja: karta bez/z obrazem

Funkcja :has() przyjmuje jako argument listę względnych selektorów, dzięki czemu możesz wybrać znacznie więcej niż element nadrzędny. Za pomocą różnych selektorów CSS można nie tylko przemieszczać się w drzewie DOM, ale też dokonywać selekcji bocznych. Na przykład li:has(+ li:hover) wybierze element <li>, który poprzedza element <li> nad którym znajduje się kursor.

CSS :has() demo: Dock

Dowiedz się więcej o selektorze CSS :has().

Aktualizowanie zapytania do mediów

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 102.
  • Safari: 17.

Source

Zapytanie o multimedia update umożliwia dostosowanie interfejsu do częstotliwości odświeżania urządzenia. Funkcja może zwracać wartość fast, slow lub none, która odnosi się do możliwości różnych urządzeń.

Większość urządzeń, na które projektujesz, prawdopodobnie ma szybką częstotliwość odświeżania. Dotyczy to komputerów i większości urządzeń mobilnych. Czytniki e-booków i urządzenia takie jak niskonapięciowe systemy płatności mogą mieć wolną częstotliwość odświeżania. Wiedząc, że urządzenie nie radzi sobie z animacjami lub częstymi aktualizacjami, możesz oszczędzać baterię lub zapobiegać błędnym aktualizacjom widoku.

Za pomocą opcji wyboru z opcji wybierz wartość szybkości aktualizacji i zobacz, jak wpływa ona na kaczkę.

Dowiedz się więcej o @media (aktualizacja).

Skryptowanie zapytania o multimedia

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 113.
  • Safari: 17.

Source

Zapytanie dotyczące obsługi skryptów pozwala sprawdzić, czy JavaScript jest dostępny. To bardzo przydatne rozwiązanie. Przed tą zapytaniem o multimedia strategią wykrywania dostępności JavaScriptu było umieszczanie w HTML-u klasy nojs i usuwanie jej za pomocą JavaScriptu. Te skrypty można usunąć, ponieważ CSS ma teraz możliwość wykrywania JavaScriptu i odpowiedniego dostosowywania.

Dowiedz się, jak włączać i wyłączać JavaScript na stronie, aby przetestować ją za pomocą Narzędzi deweloperskich w Chrome.

Rozważ przełączanie motywów w witrynie. Zapytanie o multimedia w skrypcie może pomóc w przełączeniu na ustawienie systemu, ponieważ nie jest dostępny JavaScript. Możesz też rozważyć komponent przełącznika. Jeśli JavaScript jest dostępny, przełącznik można włączyć gestem, zamiast tylko przełączać go. Jeśli skrypty są wyłączone, możesz stworzyć użyteczne podstawy.

Dowiedz się więcej o skrypcie.

Zapytanie o multimedia z ograniczoną przejrzystością

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: behind a flag.
  • Safari: not supported.

Source

Nieprzezroczyste interfejsy mogą powodować bóle głowy lub utrudniać korzystanie z aplikacji osobom z różnymi wadami wzroku. Dlatego w systemach Windows, macOS i iOS są dostępne ustawienia, które pozwalają zmniejszyć lub całkowicie usunąć przezroczystość interfejsu. To zapytanie o multimedia dla prefers-reduced-transparency pasuje do innych zapytań o multimedia w preferencjach, które pozwalają na kreatywność, a jednocześnie na dostosowanie reklam do użytkowników.

W niektórych przypadkach możesz przesłać alternatywny układ, w którym nie ma nakładających się treści. W innych przypadkach można dostosować krycie koloru, aby było nieprzejrzyste lub prawie nieprzejrzyste. W tym wpisie na blogu znajdziesz więcej inspirujących demonstracji, które dostosowują się do preferencji użytkownika. Zapoznaj się z nimi, jeśli chcesz dowiedzieć się, kiedy warto używać zapytania o multimedia.

Dowiedz się więcej o atrybucie @media (prefers-reduced-transparency).

Interakcja

Interakcja jest podstawą doświadczeń cyfrowych. Dzięki temu użytkownicy mogą dowiedzieć się, co kliknęli i gdzie się znajdują w przestrzeni wirtualnej. W tym roku pojawiło się wiele ciekawych funkcji, które ułatwiają tworzenie i wdrażanie interakcji, co pozwala na płynne przejścia użytkowników przez witrynę i zapewnia lepsze wrażenia z korzystania z internetu.

Wyświetlanie przejść

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: not supported.
  • Safari: 18.

Source

Przejścia między widokami mają ogromny wpływ na wrażenia użytkownika związane z korzystaniem ze strony. Za pomocą interfejsu View Transitions API możesz tworzyć wizualne przejścia między 2 stanami strony w aplikacji jednostronicowej. Te przejścia mogą dotyczyć całej strony lub mniejszych elementów na stronie, takich jak dodawanie lub usuwanie nowego elementu z listy.

Interfejs View Transitions API opiera się na funkcji document.startViewTranstion. Przekaż funkcję, która zaktualizuje DOM do nowego stanu, a interfejs API zadba o wszystko za Ciebie. Polega to na zrobieniu migawki przed i po oraz przełączeniu się między nimi. Za pomocą kodu CSS możesz kontrolować, co zostanie uchwycone, i opcjonalnie dostosować sposób animowania tych ujęć.

Wyświetl demonstrację przejścia

interfejs View Transitions API do aplikacji jednostronicowych wprowadzony w Chrome 111. Dowiedz się więcej o przejściach między widokami.

Funkcja łagodnego przejścia liniowego

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 112.
  • Safari: 17.2.

Source

Nie daj się zwieść nazwie tej funkcji. Funkcja linear() (nie mylić z kluczowym słowem linear) umożliwia tworzenie złożonych funkcji wygładzania w prosty sposób, ale z pewnym kompromisem w kosztach precyzji.

Przed wprowadzeniem funkcji linear() w wersji 113 przeglądarki Chrome tworzenie efektów odbicia i odskoków w CSS było niemożliwe. Dzięki linear()można przybliżać te łagodne przejścia, upraszczając je do serii punktów, a następnie liniowo interpolować między tymi punktami.

Wykres wygładzający skok z kilkoma dodanymi kropkami
Pierwotna krzywa odskoku (na niebiesko) została uproszczona za pomocą zestawu kluczowych punktów (na zielono). Funkcja linear() używa tych punktów i liniowo interpoluje między nimi.

Dowiedz się więcej o linear(). Aby utworzyć krzywe linear(), użyj generatora wykładniczego liniowego.

Koniec przewijania

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 109.
  • Safari: not supported.

Source

Wiele interfejsów zawiera interakcje związane z przewijaniem, a czasami interfejs musi zsynchronizować informacje dotyczące bieżącej pozycji przewijania lub pobrać dane na podstawie bieżącego stanu. Przed zdarzeniem scrollend trzeba było używać nieprecyzyjnej metody limitowania czasu, która mogła się aktywować, gdy palec użytkownika nadal znajdował się na ekranie. Zdarzenie scrollend to zdarzenie scrollend o idealnym czasie, które pozwala określić, czy użytkownik nadal wykonuje gest.

To było ważne dla przeglądarki, ponieważ JavaScript nie może śledzić obecności palców na ekranie podczas przewijania – te informacje są po prostu niedostępne. Fragmenty kodu nieprawidłowego próby zakończenia przewijania można teraz usunąć i zastąpić zdarzeniem o wysokiej precyzji należącym do przeglądarki.

Dowiedz się więcej o scrollend.

Animacje sterowane przewijaniem

Browser Support

  • Chrome: 115.
  • Edge: 115.
  • Firefox: behind a flag.
  • Safari: not supported.

Source

Animacje wywoływane przez przewijanie to ciekawa funkcja dostępna w Chrome 115. Dzięki nim możesz połączyć istniejącą animację CSS lub animację utworzoną za pomocą interfejsu Web Animations API z przesunięciem przewijania. Gdy przewijasz w górę i w dół lub w lewo i w prawo, połączona animacja będzie odtwarzać się do przodu i do tyłu.

Za pomocą ScrollTimeline możesz śledzić ogólny postęp scrollera, jak pokazano w tym filmie demonstracyjnym. Gdy przewijasz stronę do końca, tekst ujawnia się znak po znaku.

Przykład animacji CSS sterowanej przez przewijanie: linia czasu przewijania

Za pomocą ViewTimeline możesz śledzić element, gdy przechodzi przez obszar przewijania. Działa to podobnie do sposobu, w jaki IntersectionObserver śledzi element. W tym pokazie każde zdjęcie pojawia się od momentu, gdy wejdzie do obszaru przewijania, do momentu, gdy znajdzie się w środku.

Przykład animacji CSS uruchamianych przez przewijanie: widok osi czasu

Animacje uruchamiane przez przewijanie działają z animacjami CSS i interfejsem Web Animations API, dzięki czemu możesz korzystać ze wszystkich zalet tych interfejsów API. Obejmuje to możliwość uruchamiania tych animacji poza wątkiem głównym. Teraz możesz uzyskać płynne animacje, które są uruchamiane przez przewijanie i działają w wątku głównym za pomocą zaledwie kilku dodatkowych linii kodu.

Aby dowiedzieć się więcej o animacjach uruchamianych przez przewijanie, przeczytaj ten artykuł, w którym znajdziesz wszystkie szczegóły, lub odwiedź stronę scroll-driven-animations.style, na której znajdziesz wiele wersji demonstracyjnych.

Załącznik do opóźnionego harmonogramu

Browser Support

  • Chrome: 116.
  • Edge: 116.
  • Firefox: not supported.
  • Safari: not supported.

Source

Podczas stosowania animacji sterowanej przez przewijanie za pomocą kodu CSS mechanizm wyszukiwania kontrolującego scroller zawsze przechodzi w górę drzewa DOM, co powoduje, że jest on ograniczony tylko do przodków przewijania. Często jednak element, który wymaga animacji, nie jest elementem podrzędnym scrollera, ale elementem znajdującym się w zupełnie innym poddrzewie.

Aby umożliwić animowanemu elementowi znalezienie nazwanej osi czasu przewijania nieprzodka, użyj właściwości timeline-scope w przypadku udostępnionego elementu nadrzędnego. Dzięki temu zdefiniowane elementy scroll-timeline lub view-timeline o tej nazwie mogą się do niej dołączać, co zwiększa jej zasięg. W takim przypadku każda jednostka podrzędna tej udostępnionej jednostki nadrzędnej może korzystać z tej osi czasu.

Wizualizacja poddrzewa modelu DOM z zakresem osi czasu używanym w przypadku elementu nadrzędnego udostępnionego
Jeśli w deklaracji elementu nadrzędnego udostępnionego jest element timeline-scope, element scroll-timeline zadeklarowany w scrollerze może być znaleziony przez element, który używa go jako animation-timeline
Przykład animacji sterowanej przewijaniem w CSS: załącznik z opóźnionym działaniem

Dowiedz się więcej o timeline-scope.

Animacje właściwości dyskretnych

Kolejną nową funkcją w 2023 r. jest możliwość animowania oddzielnych animacji, np. animacji do i z display: none. Od wersji 116 Chrome możesz używać w regułach kluczowych klatek wartości displaycontent-visibility. Możesz też przeprowadzić przejście w przypadku dowolnej właściwości dyskretnej w punkcie 50% zamiast 0%. Można to zrobić za pomocą właściwości transition-behavior, używając słowa kluczowego allow-discrete, lub za pomocą właściwości transition jako skrótu.

Dowiedz się więcej o przechodzeniu na oddzielne animacje.

@starting-style

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 129.
  • Safari: 17.5.

Source

Reguła CSS @starting-style opiera się na nowych funkcjach internetowych umożliwiających animację display: none. Ta reguła umożliwia nadanie elementowi stylu „przed otwarciem”, który przeglądarka może sprawdzić, zanim element zostanie otwarty na stronie. Jest to bardzo przydatne w przypadku animacji wejść i animacji elementów takich jak wyskakujące okienka czy okna dialogowe. Może się to przydać również wtedy, gdy tworzysz element i chcesz go animować. Weź pod uwagę poniższy przykład, w którym atrybut popover (patrz następna sekcja) jest animowany i płynnie przemieszcza się z poziomu poza widocznym obszarem do widoku i do górnej warstwy.

Dowiedz się więcej o stylu@starting i innych animacjach wejścia.

Nakładka

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: not supported.
  • Safari: not supported.

Source

Nową właściwość CSS overlay można dodać do przejścia, aby umożliwić płynne animacje elementów z używnymi stylami najwyższej warstwy, takich jak popoverdialog. Jeśli nie użyjesz nakładki przejścia, element natychmiast wróci do stanu ucięcia, przekształcenia i przykrycia, a Ty nie zobaczysz przejścia. Podobnie overlay umożliwia płynne animacje ::backdrop po dodaniu do elementu najwyższej warstwy.

Dowiedz się więcej o przesłonie i innych animacjach wyjścia.

Komponenty

Rok 2023 był ważnym rokiem na styku stylów i komponentów HTML. Wprowadziliśmy popover, a także wykonaliśmy wiele prac związanych z pozycjonowaniem kotwic i przyszłością stylów menu. Te komponenty ułatwiają tworzenie typowych wzorów interfejsu użytkownika bez konieczności korzystania z dodatkowych bibliotek lub tworzenia własnych systemów zarządzania stanem od podstaw za każdym razem.

Wyskakujące okienko

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 125.
  • Safari: 17.

Source

Interfejs API Popup pomaga tworzyć elementy, które wyświetlają się na wierzchu reszty strony. Mogą to być menu, elementy dobierane przez użytkownika i etykiety. Aby utworzyć proste okno wyskakujące, dodaj atrybut popoverid do elementu, który się wyświetla, i połącz jego atrybut id z przyciskiem wywołania za pomocą atrybutu popovertarget="my-popover". Interfejs Popover API obsługuje:

  • Promocja do warstwy najwyższej. Pop-upy będą wyświetlane w osobnej warstwie nad resztą strony, więc nie musisz bawić się wartością wskaźnika z-index.
  • Funkcja odrzucenia bez ostrzeżenia. Kliknięcie poza obszarem wyskakującego okienka spowoduje jego zamknięcie i przywrócenie zaznaczenia.
  • Domyślne zarządzanie punktem ostrości. Po otwarciu wyskakującego okienka następny przystanek będzie znajdować się w wyskakującym okienku.
  • Dostęp do skrótów klawiszowych. Naciśnięcie klawisza esc lub dwukrotne kliknięcie spowoduje zamknięcie wyskakującego okienka i przywrócenie fokusu.
  • Dostępne powiązania komponentów Semantyczne łączenie elementu wyskakującego z aktywatorem wyskakującego okienka

Reguły poziome w wybranych

Kolejną niewielką zmianą w HTML, która pojawiła się w tym roku w Chrome i Safari, jest możliwość dodawania elementów poziomej linii (tagów <hr>) do elementów <select>, aby wizualnie podzielić treści. Wcześniej umieszczenie w elemencie select tagu <hr> nie powodowało jego renderowania. W tym roku zarówno Safari, jak i Chrome obsługują tę funkcję, co umożliwia lepsze oddzielenie treści w elementach <select>.

Dowiedz się więcej o używaniu znaku <hr> w wybraniu.

:prawidłowe i nieprawidłowe pseudoklasy użytkownika

Browser Support

  • Chrome: 119.
  • Edge: 119.
  • Firefox: 88.
  • Safari: 16.5.

Source

W tym roku :user-valid:user-invalid są stabilne we wszystkich przeglądarkach. Działania tych pseudoklas :valid:invalid są podobne, ale elementy formularza pasują tylko wtedy, gdy użytkownik w znaczący sposób wejdzie w interakcję z polem wejściowym. Pole formularza, które jest wymagane i puste, będzie pasować do :invalid, nawet jeśli użytkownik nie zaczął jeszcze wchodzić w interakcję ze stroną. Ten sam element sterujący nie będzie pasować do :user-invalid, dopóki użytkownik nie zmieni danych wejściowych i nie pozostawi ich w nieprawidłowym stanie.

Dzięki tym nowym selektorom nie musisz już pisać kodu stanowego, aby śledzić zmiany wprowadzone przez użytkownika.

Dowiedz się więcej o używaniu pseudoelementów walidacji formularzy user-*.

Ekskluzywny harmonijka

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 130.
  • Safari: 17.2.

Popularnym wzorcem interfejsu użytkownika w internecie jest komponent harmonijka. Aby wdrożyć ten wzór, połącz kilka elementów <details>, często grupowanych wizualnie, aby wskazać, że należą do siebie.

Nowością w Chrome 120 jest obsługa atrybutu name w elementach <details>. Gdy używasz tego atrybutu, wiele elementów <details> o tej samej wartości name tworzy grupę semantyczną. W danym momencie można otworzyć tylko 1 element w grupie: gdy otworzysz jeden z elementów <details> z grupy, poprzednio otwarty element zostanie automatycznie zamknięty. Ten typ harmonijki nazywa się harmonijką wyłączną.

Demo wyłącznego menu

Elementy <details>, które są częścią wyłącznego menu, nie muszą być elementami braćmi. Mogą być rozproszone po całym dokumencie.

W ostatnich latach, a zwłaszcza w 2023 r., CSS przeżywa renesans. Jeśli nie znasz się na CSS lub chcesz odświeżyć sobie podstawy, skorzystaj z naszego bezpłatnego kursu Ucz się CSS oraz innych bezpłatnych kursów dostępnych na stronie web.dev.

Życzymy Ci wesołych Świąt i liczymy, że wkrótce wykorzystasz w swojej pracy niektóre z tych wspaniałych nowych funkcji CSS i UI.

⇾ Zespół ds. interfejsu użytkownika Chrome,