Радиальные градиенты
radial-gradient() смешивает цвета наружу от центральной точки. Как и любой градиент CSS, это изображение, поэтому он пишется в background-image (или в сокращенном свойстве background):
Полный синтаксис: radial-gradient(shape size at position, color stops). Все, что перед цветами, необязательно.
| Часть | Значения | По умолчанию |
|---|---|---|
| Форма | circle, ellipse | ellipse |
| Размер | closest-side, closest-corner, farthest-side, farthest-corner или длины | farthest-corner |
| Позиция | at center, at top left, at 30% 70%, at 20px 40px | at center |
| Цветовые точки | Два и больше цветов, у каждого необязательная позиция |
Ключевое слово размера определяет, где будет достигнут последний цвет: у ближайшей стороны блока, у дальнего угла и так далее. Меняйте значения здесь и смотрите, как градиент перерисовывается:
Попробуйте circle farthest-corner at 30% 50%, #f59e0b, #2563eb, ellipse at bottom, white, #16a34a и circle 40px, #f59e0b 99%, transparent (точка с резким краем).
Линейные градиенты
linear-gradient() смешивает цвета вдоль прямой линии. Сначала направление или угол, затем цвета:
Углы начинаются с 0deg, направленного вверх, и идут по часовой стрелке, поэтому 90deg это to right, а 180deg это to bottom по умолчанию. to right остается физическим и на страницах справа налево; отразите его сами, если градиент должен следовать направлению чтения.
Цветовые точки и резкие переходы
У каждого цвета может быть позиция. Без позиций цвета распределяются равномерно. Когда у двух цветов одна позиция, смена мгновенная, и так рисуют полосы, флаги и индикаторы прогресса:
Точка может принимать и две позиции, #111827 12px 24px, это рисует сплошную полосу от 12px до 24px.
Конические градиенты
conic-gradient() проводит цвета по кругу вокруг центральной точки, как стрелки часов. С резкими переходами он рисует круговую диаграмму без изображений и JavaScript:
Диаграмма, нарисованная в CSS, невидима для программ чтения с экрана, поэтому продублируйте числа текстом.
Градиентный текст
Обрежьте градиентный фон по буквам и сделайте сам текст прозрачным:
.gradient-text {
background: linear-gradient(90deg, #2563eb, #db2777);
-webkit-background-clip: text; /* older browsers need the prefix */
background-clip: text;
color: transparent;
}
Помните о запасном обычном color: если обрезка не сработает, текст исчезнет. У градиентного текста еще и неравномерная контрастность, поэтому используйте его только для крупных заголовков.
Градиенты складываются с изображениями и другими градиентами в одном списке background-image; слои, размер и позиция разобраны на странице фоновое изображение.
Частые ошибки
background-color: linear-gradient(...). Градиент это изображение: используйтеbackground-imageилиbackground.- Градусы не в ту сторону. 0deg направлен вверх, а не вправо.
90degидет вправо. - Градиент на элементе без высоты. Ничего не видно; дайте элементу содержимое или размер.
- Грязные цвета посередине. Смешение двух насыщенных противоположных цветов, например красного и зеленого, в sRGB проходит через серо-коричневый. Добавьте среднюю точку или смешивайте в другом цветовом пространстве:
linear-gradient(in oklch, red, green). - Ступеньки на больших мягких градиентах. Очень близкие цвета на большой площади показывают ступени; помогает чуть больший контраст между точками.
Часто задаваемые вопросы
Как сделать радиальный градиент в CSS?
Используйте background-image: radial-gradient(#93c5fd, #1e3a8a);. Перед цветами можно добавить форму и позицию, например radial-gradient(circle at top left, #93c5fd, #1e3a8a).
Чем circle отличается от ellipse в radial-gradient?
ellipse (по умолчанию) растягивается по пропорциям блока, поэтому в широком блоке он широкий. circle сохраняет градиент круглым при любой форме блока.
Как задать направление линейного градиента?
Поставьте первым направление или угол: linear-gradient(to right, red, blue) или linear-gradient(45deg, red, blue). По умолчанию to bottom (180deg); 0deg направлен вверх, а углы идут по часовой стрелке.
Как сделать резкие полосы вместо плавного перехода?
Задайте двум цветам одну и ту же позицию: linear-gradient(90deg, #2563eb 50%, #f59e0b 50%) меняет цвет посередине без перехода. repeating-linear-gradient повторяет узор из таких точек.
Можно ли использовать градиент как background-color?
Нет. Градиент это изображение, поэтому он пишется в background-image или в сокращенном свойстве background. background-color: linear-gradient(...) невалидно и игнорируется.