Rozmycie i zmiana kolorów za elementem.
Przejrzystość, rozmycie i inne efekty to przydatne sposoby na uzyskanie głębi, zachowując kontekst treści w tle. Obsługują one różne przypadki użycia, takie jak matowe szkło, nakładki wideo, półprzezroczyste nagłówki nawigacji, nieodpowiednia cenzura obrazów, wczytywanie obrazów itd. Możesz rozpoznawać te efekty z 2 popularnych systemów operacyjnych: Windows 10 i iOS.
Do tej pory techniki te były trudne do wdrożenia w internecie, więc wymagały mniej niż doskonałego hakowania lub obejścia. W ostatnich latach zarówno Safari, jak i Edge oferują te możliwości dzięki właściwości background-filter
(lub -webkit-backdrop-filter
), która dynamicznie łączy kolory pierwszego planu i tła na podstawie funkcji filtra. Teraz Chrome obsługuje background-filter
(od wersji 76).
Obsługiwane przeglądarki
Ze względu na wydajność, jeśli backdrop-filter
nie jest obsługiwany, używaj obrazu zamiast kodu polyfill. Widać to w przykładzie poniżej.
@supports (backdrop-filter: none) {
.background {
backdrop-filter: blur(10px);
}
}
@supports not (backdrop-filter: none) {
.background {
background-image: blurred-hero.png;
}
}
Podstawowe informacje
- Właściwość
backdrop-filter
stosuje do elementu co najmniej 1 filtr, zmieniając wygląd wszystkich elementów za nim. - Element nakładany musi być co najmniej częściowo przezroczysty.
- Nałożony element otrzyma nowy kontekst.
CSS backdrop-filter
stosuje co najmniej 1 efekt do elementu, który jest półprzezroczysty lub przezroczysty. Aby zrozumieć tę kwestię, zapoznaj się z poniższymi obrazami.
.frosty-glass-pane { backdrop-filter: blur(2px); }
.frosty-glass-pane { opacity: .9; backdrop-filter: blur(2px); }
Obraz po lewej stronie pokazuje, jak zostałyby wyrenderowane nakładające się elementy, gdyby elementy backdrop-filter
nie były używane lub obsługiwane. Na obrazie po prawej stronie zastosowano efekt rozmycia: backdrop-filter
. Zwróć uwagę, że oprócz backdrop-filter
używa uprawnienia opacity
. Bez opacity
nie byłoby nic do zamazania. Jeśli zasada opacity
ma ustawienie 1
(pełne nieprzezroczystość), to tło nie będzie miało żadnego wpływu.
Właściwość backdrop-filter
jest jak filtry CSS, ponieważ obsługuje wszystkie Twoje ulubione funkcje filtrowania: blur()
, brightness()
, contrast()
, opacity()
, drop-shadow()
itd. Obsługuje również funkcję url()
, jeśli chcesz użyć jako filtra obrazu zewnętrznego oraz słów kluczowych none
, inherit
, initial
i unset
. Wyjaśnienia wszystkich tych kwestii znajdziesz w MDN, w tym opisy składni, filtrów i wartości.
Gdy backdrop-filter
ma wartość inną niż none
, przeglądarka tworzy nowy kontekst warstwowy. Można też utworzyć blok zawierający, ale tylko wtedy, gdy element ma elementy podrzędne o stałej pozycji i bezwzględnej pozycji.
Możesz łączyć filtry, aby uzyskać bogate i sprytne efekty, lub używać jednego filtra, aby uzyskać bardziej subtelne lub precyzyjne efekty. Możesz nawet łączyć je z filtrami SVG.
Przykłady
Techniki i style projektowania zarezerwowane wcześniej dla systemów operacyjnych są teraz wydajniejsze i możliwe do realizacji za pomocą pojedynczej deklaracji CSS. Przyjrzyjmy się kilku przykładom.
Pojedynczy filtr
W przykładzie poniżej efekt matowej farby jest uzyskiwany przez połączenie koloru i rozmycia. Rozmycie dostarcza backdrop-filter
, a kolor pochodzi z półprzezroczystego koloru tła elementu.
.blur-behind-me {
background-color: rgba(255, 255, 255, 0.3);
backdrop-filter: blur(.5rem);
}
Wiele filtrów
Czasami uzyskanie pożądanego efektu wymaga użycia kilku filtrów. Aby to zrobić, podaj listę filtrów rozdzielonych spacjami. Na przykład:
.brighten-saturate-and-blur-behind-me {
backdrop-filter: brightness(150%) saturate(150%) blur(1rem);
}
W poniższym przykładzie każdy z 4 paneli ma inną kombinację filtrów tła, a za nimi jest animowany ten sam zestaw kształtów.
Nakładki reklamowe
W tym przykładzie pokazujemy, jak rozmyć półprzezroczyste tło, aby tekst był czytelny, a jednocześnie stylistycznie stapia się z tłem strony.
.modal {
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.5);
}
Kontrast tekstu na tłach dynamicznych
Jak już wspomnieliśmy, backdrop-filter
umożliwia stosowanie efektywnych efektów, które byłyby trudne lub niemożliwe do wykonania w internecie. Przykładem może być zmiana tła w odpowiedzi na animację. W tym przykładzie backdrop-filter
zachowuje wysoki kontrast między tekstem a tłem niezależnie od tego, co dzieje się za tekstem. Zaczyna od domyślnego koloru tła (darkslategray
), a następnie za pomocą funkcji backdrop-filter
odwraca kolory po przekształceniu.
.container::before {
z-index: 1;
background-color: darkslategray;
filter: invert(1);
}
.container::after {
backdrop-filter: invert(1);
z-index: 3;
}
Podsumowanie
W ciągu ostatnich kilku lat ponad 560 użytkowników zagłosowało za błędem Chromium, co wyraźnie oznacza, że ta funkcja jest długo oczekiwaną funkcją. Opublikowana w Chrome backdrop-filter
w wersji 76 sprawia, że interfejs sieciowy jest o krok bliżej do realistycznego interfejsu użytkownika w systemie operacyjnym.