Generator cienia CSS (box-shadow)
Twórz po jednej regule box-shadow: ustaw poziomy i pionowy offset, rozmycie, rozszerzenie, kolor oraz opcjonalne inset, a potem skopiuj wynik. Prawdziwe cienie zwykle potrzebują dwóch lub trzech warstw, więc generuj każdą warstwę osobno i łącz reguły przecinkiem.
Jak zaprojektować cień (box-shadow)
-
1
Ustaw wartości cienia
Przesunięcie poziome, przesunięcie pionowe, promień rozmycia, rozszerzenie oraz kolor z przezroczystością.
-
2
Przełącz inset
Zmień cień na inset, aby uzyskać cień wewnętrzny, przydatne przy wciśniętych przyciskach i efektach wgłębienia.
-
3
Wybierz kolor cienia
Czerń o niskiej przezroczystości to klasyk. Kolorowe cienie (w odcieniu elementu, ciemniejsze) wyglądają bardziej naturalnie.
-
4
Skopiuj CSS
Skopiuj pojedynczą regułę cienia i wklej ją do arkusza stylów. Aby uzyskać cień warstwowy, generuj każdą warstwę osobno i łącz reguły przecinkiem.
Składnia box-shadow
box-shadow: <przesunięcie-x> <przesunięcie-y> <rozmycie> <rozszerzenie> <kolor> [inset];
- przesunięcie-x: dodatnie = w prawo, ujemne = w lewo.
- przesunięcie-y: dodatnie = w dół, ujemne = w górę.
- rozmycie: 0 = ostra krawędź, większe = bardziej miękkie. Widoczny rozmiar to mniej więcej 1,5× rozmycia poza elementem.
- rozszerzenie: dodatkowy rozmiar poza elementem. Dodatnie powiększa cień; ujemne go zmniejsza (przydatne do subtelnych otoczek).
- kolor: obsługuje dowolny kolor CSS.
rgba(0, 0, 0, 0.15)to chleb powszedni. - inset: słowo kluczowe odwracające cień do wnętrza elementu.
Warstwowe cienie wyglądają prawdziwie
Ten generator wypisuje po jednej regule cienia; aby zbudować cień warstwowy, generuj każdą warstwę osobno i łącz reguły przecinkiem.
Jeden cień z 0 0 40px wygląda mglisto. Dwa cienie, mały, ostry blisko elementu i większy, miękki dalej, naśladują to, jak rozprasza się prawdziwe światło.
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.08),
0 4px 12px rgba(0, 0, 0, 0.08);
Pierwszy wiersz daje ciasny cień kontaktowy; drugi miększy cień otoczenia. Ten jeden wzorzec pokrywa 80% interfejsów w stylu kart.
Systemy uniesienia
Material Design używa 6 poziomów uniesienia, każdy z innym zestawem cieni. W uproszczeniu:
| Uniesienie | Cień |
|---|---|
| 1 (spoczynek) | 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24) |
| 2 | 0 3px 6px rgba(0,0,0,.16), 0 3px 6px rgba(0,0,0,.23) |
| 3 | 0 10px 20px rgba(0,0,0,.19), 0 6px 6px rgba(0,0,0,.23) |
| 4 (uniesione) | 0 14px 28px rgba(0,0,0,.25), 0 10px 10px rgba(0,0,0,.22) |
| 5 (unoszące się) | 0 19px 38px rgba(0,0,0,.30), 0 15px 12px rgba(0,0,0,.22) |
Wybierz jeden na rolę uniesienia i używaj go konsekwentnie.
Kolorowe cienie wyglądają bardziej naturalnie
Czysto czarne cienie wyglądają sztucznie, bo prawdziwe cienie są podbarwione przez powierzchnię pod nimi. Spróbuj:
box-shadow: 0 12px 24px rgba(40, 80, 120, 0.18);
- chłodna niebieskoszarość zamiast czystej czerni. Na ciepłych tłach użyj cieplejszego odcienia.
Wydajność
Cienie box-shadow są malowane przy każdym przemalowaniu. Duże, ciężkie cienie na wielu elementach mogą spowalniać przewijanie. Sposoby zaradcze:
- Użyj
transform: translateZ(0)na elemencie, aby wymusić warstwę kompozytową. - Zastąp złożone cienie przez
filter: drop-shadow()tylko wtedy, gdy cień ma podążać za clip-path (ogólnie jest wolniejszy). - Ogranicz cienie na elementach, które często się przerysowują.
Inset dla stanów wciśnięcia
.button:active {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.12);
}
Cienie inset udają wgłębienie, przycisk wygląda jak wciśnięty w powierzchnię. Połącz z małym przesunięciem w dół transform: translateY(1px), aby uzyskać dotykowe kliknięcie.
Najczęściej zadawane pytania
Zwykle dlatego, że rozmycie jest za niskie albo rozszerzenie za wysokie. Cień o ostrej krawędzi bez rozmycia wygląda jak duplikat elementu. Zwiększ rozmycie (20-30px to częsty punkt wyjścia) i trzymaj rozszerzenie na 0 albo bardzo małych wartościach ujemnych.
Box-shadow podąża za border-box elementu, włącznie z border-radius, więc zaokrąglone karty automatycznie dostają ładnie zaokrąglone cienie. Dla kształtów clip-path box-shadow nie podąża za przycięciem; użyj zamiast tego filter: drop-shadow().
Przesuń cień mocno w wybranym kierunku i użyj ujemnego rozszerzenia, aby ukryć przeciwną stronę. Albo użyj dwóch cieni, jeden widoczny po docelowej stronie, drugi z ujemnym rozszerzeniem, aby “zjeść” niechciany wyciek.
Nie ma twardego limitu, ale każdy cień to kolejny przebieg malowania. Trzy do czterech warstw to praktyczny sufit; przy większej liczbie rozważ użycie obrazu tła albo SVG.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator losowych liter
Generuj losowe litery A-Z. Wybierz liczbę, wielkie litery, małe litery lub zapis mieszany i użyj wyniku w grach, zadaniach lub lekcjach.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Próbnik kolorów HEX
Wybierz lub wpisz kolor HEX i sprawdź RGB, HSL, przybliżone CMYK, luminancję względną oraz kontrast z bielą i czernią.