Głębia i tekstura
- Nakładaj na siebie wiele cieni, aby uzyskać realistyczne efekty miękkiej głębi.
- W przypadku kształtów innych niż prostokątne lub przezroczystych plików PNG użyj
filter: drop-shadow()zamiastbox-shadow. - Użyj
mix-blend-modeibackground-blend-modedo nakładek oświetlenia (ogranicz zakres za pomocąisolation: isolate)
.hero {
background-image: url('texture.png'), linear-gradient(to bottom, #fff, #eee);
background-blend-mode: soft-light;
}
Gradienty i color-mix()
Użyj in oklch lub in oklab, aby jawnie określić przestrzeń barw interpolacji dla gradientów lub color-mix().
in oklchlepiej zachowuje chrominancję, ale może łatwiej wykraczać poza gamę urządzenia, zwłaszcza w przypadku większych różnic między koloramiin oklabłatwiej pozostaje w gamie (zakładając, że punkty końcowe są w gamie), ale może tworzyć wyblakłe, nienasycone kolory w środku, zwłaszcza podczas interpolacji między przeciwnymi odcieniami.- NIE używaj
in srgb, chyba że masz ku temu konkretny powód (np. tworzysz selektor kolorów, który musi interpolować w srgb).
Funkcja zastępcza
Niektóre przeglądarki sprzed 2024 r. nie obsługują przestrzeni interpolacji kolorów gradientu. Aby obsługiwać te przeglądarki, używaj tokena tylko wtedy, gdy jest to bezpieczne, definiując zmienną:
:root {
--in-oklab: ;
--in-oklch: ;
}
@supports (linear-gradient(in oklab, white, black)) {
:root {
--in-oklab: in oklab;
--in-oklch: in oklch;
}
}
Następnie użyj w ten sposób:
.card {
background: linear-gradient(to bottom var(--in-oklab), var(--accent-color), var(--darker));
}
- Ważne: jeśli używasz tej techniki, upewnij się, że zawsze istnieje niepusty gradient bez tego prefiksu. W przeciwnym razie w starszych przeglądarkach wystąpi błąd składni.
- Nie potrzebujesz tego w przypadku
color-mix(). Jeśli przeglądarka obsługujecolor-mix(), obsługuje też argumentin <color-space>.
Wzory
Wiele wzorów można utworzyć za pomocą gradientów CSS i twardych zatrzymań. Mogą one być bardziej elastyczne i wydajne niż pliki SVG lub obrazy zewnętrzne, ponieważ mają dostęp do zmiennych CSS i długości z otaczającego kontekstu.
Nie musisz powtarzać pozycji dwukrotnie – wystarczy użyć 0 lub 0%, a funkcja poprawiania gradientu automatycznie dostosuje pozycję.
Przykłady poniżej.
Pionowe pasy o szerokości 1em każdy:
background: linear-gradient(to right, var(--color-1) 50%, var(--color-2) 0) 0 / 2em;
Ukośne pasy o szerokości 1em:
background: repeating-linear-gradient(-45deg, var(--color-1) 0 1em, var(--color-2) 0 2em);
Wzór szachownicy z 1em kwadratami:
background: repeating-conic-gradient(var(--color-1) 0 25%, var(--color-2) 0 50%) 0 / 2em 2em;
Wzór w groszki o promieniu .5em, odstępy między groszkami 2em (w poziomie/pionie – pomnóż przez sqrt(2), aby uzyskać odległość po przekątnej):
--distance: 2em;
--radius: .5em;
--polka: radial-gradient(circle, var(--color-1) var(--radius), transparent calc(var(--radius) + 1px));
background: var(--polka) 0 0, var(--polka) var(--distance) var(--distance) var(--color-2);
background-size: calc(var(--distance) * 2) calc(var(--distance) * 2);
Prosty wykres kołowy:
.pie {
--p: 80%;
width: 60px;
aspect-ratio: 1;
border-radius: 50%;
background: conic-gradient(var(--color-1) var(--p), transparent 0%) var(--color-2);
}
Ważne: jeśli do renderowania wykresów używasz gradientów, upewnij się, że czytniki ekranu mają dostęp do wersji tekstowej. OBOWIĄZKOWO: MUSISZ podać semantyczną tabelę danych jako dostępną alternatywę, zgodnie z opisem w wytycznych dotyczących kodowania ułatwień dostępu w sekcji wytycznych dotyczących tekstu alternatywnego i multimediów.