Menu

Gradient w CSS: radial-gradient, linear i conic

Gradienty CSS to obrazy, które przeglądarka rysuje z kolorów. Poznaj radial-gradient (kształt, rozmiar, pozycja), linear-gradient (kierunek i kąty), conic-gradient, punkty kolorów, ostre przejścia do pasków, gradienty powtarzane i tekst z gradientem.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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ściDomyślnie
Kształtcircle, ellipseellipse
Rozmiarclosest-side, closest-corner, farthest-side, farthest-corner albo długościfarthest-corner
Pozycjaat center, at top left, at 30% 70%, at 20px 40pxat center
Punkty kolorówDwa 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żyj background-image albo background.
  • Stopnie w złą stronę. 0deg wskazuje w górę, a nie w prawo. 90deg idzie 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.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ