Gradienty radialne
radial-gradient() miesza kolory od punktu środkowego na zewnątrz. Jak każdy gradient CSS jest obrazem, więc trafia do background-image (albo skrótu background):
Pełna składnia to radial-gradient(shape size at position, color stops). Wszystko przed kolorami jest opcjonalne.
| Część | Wartości | Domyślnie |
|---|---|---|
| Kształt | circle, ellipse | ellipse |
| Rozmiar | closest-side, closest-corner, farthest-side, farthest-corner albo długości | farthest-corner |
| Pozycja | at center, at top left, at 30% 70%, at 20px 40px | at center |
| Punkty kolorów | Dwa lub więcej kolorów, każdy z opcjonalną pozycją |
Słowo kluczowe rozmiaru decyduje, gdzie zostaje osiągnięty ostatni kolor: przy najbliższym boku pudełka, przy najdalszym rogu i tak dalej. Zmień wartości tutaj i obserwuj, jak gradient się przerysowuje:
Wypróbuj circle farthest-corner at 30% 50%, #f59e0b, #2563eb, ellipse at bottom, white, #16a34a i circle 40px, #f59e0b 99%, transparent (kropka z ostrą krawędzią).
Gradienty liniowe
linear-gradient() miesza kolory wzdłuż prostej linii. Na początku podaj kierunek albo kąt, a potem kolory:
Kąty zaczynają się od 0deg wskazującego w górę i rosną zgodnie z ruchem wskazówek zegara, więc 90deg to to right, a 180deg to domyślne to bottom. to right pozostaje fizycznym kierunkiem na stronach pisanych od prawej do lewej; odwróć go sam, jeśli gradient ma podążać za kierunkiem czytania.
Punkty kolorów i ostre przejścia
Każdy kolor może mieć pozycję. Bez pozycji kolory są rozłożone równomiernie. Gdy dwa kolory mają tę samą pozycję, zmiana jest natychmiastowa, i tak właśnie rysuje się paski, flagi i paski postępu:
Punkt może też mieć dwie pozycje, #111827 12px 24px, co rysuje jednolity pas od 12px do 24px.
Gradienty stożkowe
conic-gradient() rozprowadza kolory wokół punktu środkowego, jak wskazówki zegara. Z ostrymi przejściami rysuje wykres kołowy bez żadnych obrazów ani JavaScriptu:
Wykres narysowany w CSS jest niewidoczny dla czytników ekranu, więc podaj liczby także w tekście.
Tekst z gradientem
Przytnij tło z gradientem do liter i ustaw sam tekst jako przezroczysty:
.gradient-text {
background: linear-gradient(90deg, #2563eb, #db2777);
-webkit-background-clip: text; /* older browsers need the prefix */
background-clip: text;
color: transparent;
}
Pamiętaj o zwykłym color jako rozwiązaniu zapasowym: jeśli przycięcie się nie uda, tekst zniknie. Tekst z gradientem ma też nierówny kontrast, więc używaj go tylko w dużych nagłówkach.
Gradienty można nakładać z obrazami i innymi gradientami w jednej liście background-image; warstwy, rozmiar i pozycję omawia strona o obrazie tła.
Częste błędy
background-color: linear-gradient(...). Gradient to obraz: użyjbackground-imagealbobackground.- Stopnie w złą stronę. 0deg wskazuje w górę, a nie w prawo.
90degidzie w prawo. - Gradient na elemencie bez wysokości. Nic się nie pokazuje; nadaj mu treść albo rozmiar.
- Brudne kolory pośrodku. Mieszanie dwóch nasyconych przeciwstawnych kolorów, jak czerwony i zielony, przechodzi w sRGB przez szarobrązowy. Dodaj punkt pośrodku albo mieszaj w innej przestrzeni kolorów:
linear-gradient(in oklch, red, green). - Widoczne pasma na dużych, subtelnych gradientach. Bardzo bliskie kolory na dużym obszarze pokazują stopnie; pomaga trochę większy kontrast między punktami.
Najczęściej zadawane pytania
Jak zrobić gradient radialny w CSS?
Użyj background-image: radial-gradient(#93c5fd, #1e3a8a);. Przed kolorami dodaj kształt i pozycję, na przykład radial-gradient(circle at top left, #93c5fd, #1e3a8a).
Czym różni się circle od ellipse w radial-gradient?
ellipse (domyślnie) rozciąga się do proporcji pudełka, więc w szerokim pudełku jest szeroka. circle utrzymuje okrągły gradient bez względu na kształt pudełka.
Jak ustawić kierunek gradientu liniowego?
Na początku podaj kierunek albo kąt: linear-gradient(to right, red, blue) albo linear-gradient(45deg, red, blue). Domyślnie jest to to bottom (180deg); 0deg wskazuje w górę, a kąty rosną zgodnie z ruchem wskazówek zegara.
Jak zrobić ostre paski zamiast płynnego przejścia?
Nadaj dwóm kolorom tę samą pozycję: linear-gradient(90deg, #2563eb 50%, #f59e0b 50%) zmienia kolor w połowie bez przejścia. repeating-linear-gradient powtarza wzór z takich punktów.
Czy mogę użyć gradientu jako background-color?
Nie. Gradient to obraz, więc trafia do background-image albo skrótu background. background-color: linear-gradient(...) jest niepoprawne i ignorowane.