CSS-графика

CSS-градиент с заданными параметрами

Создайте CSS-градиент и получите готовый код для проекта.

Превью
и CSS-код

Настройте градиент и сразу увидите, как он выглядит в CSS.

Цвета
Направление
Код

Настройте CSS-градиент

Выберите тип, направление и цвета — получите превью и готовый CSS-код.

Результат
—
После генерации здесь появится превью и CSS-код.

Онлайн-генератор формирует CSS-градиент с заданными параметрами, преобразуя выбранные пользователем цвета, направление и тип перехода в готовое правило для таблиц стилей. Инструмент избавляет от ручного написания громоздкого синтаксиса и исключает опечатки при расчете координат цветовых точек. Пользователь настраивает внешний вид заливки в визуальном редакторе. В результате система мгновенно выдает валидную текстовую декларацию, готовую к вставке в код интерфейса при верстке или проектировании дизайна.

С технической точки зрения градиент в каскадных таблицах стилей представляет собой специальный тип данных <gradient>, который выступает подтипом <image> согласно спецификациям CSS Images Level 3 и Level 4. Браузер рендерит такой переход математически на лету, поэтому заливка масштабируется под любое разрешение экрана без потери четкости и не требует загрузки внешних графических файлов.

Для формирования итогового CSS-кода инструмент обрабатывает следующий набор входных параметров:

  • Тип градиентной функции, определяющий геометрию распределения оттенков - линейную, радиальную или коническую.
  • Вектор направления или точный угол наклона оси перехода, а также координаты центра для круговых и эллиптических форм.
  • Цветовые точки остановки с указанием оттенка в форматах HEX, RGB или HSL, уровня прозрачности альфа-канала и позиции на градиентной линии в процентах либо пикселях.

Сгенерированная строка кода напрямую копируется в файл стилей и назначается свойствам фонового изображения элемента. Такой подход ускоряет сборку компонентов при фронтенд-разработке и точно переносит сложные цветовые схемы из графических макетов в рабочую среду браузера.

Генератор CSS Gradient

Типы переходов и функции генерации градиента в CSS

Выбор типа перехода напрямую определяет математическую модель распределения оттенков и синтаксическую структуру итоговой CSS-декларации. Каждая градиентная функция задает собственную систему координат, в которой браузер вычисляет цвет каждого отдельного пикселя элемента. От выбранной функции зависит набор допустимых аргументов внутри скобок: если для прямолинейного распределения требуется вектор направления, то для круговых и секторных схем в код передаются параметры формы и центральной точки отсчета.

В современных таблицах стилей применяются три базовые функции построения цветовых переходов и три их циклические вариации. Ниже приведено сравнение их синтаксиса и геометрической логики.

Функция CSS Геометрическая модель распределения Базовый синтаксис аргументов Типичные задачи при верстке
linear-gradient() Вдоль прямой оси (градиентной линии) под заданным углом [направление], цвет1, цвет2, ... Заливка кнопок, плашек, карточек, создание направленного затенения
radial-gradient() От центральной точки к краям по форме круга или эллипса [форма размер at позиция], цвет1, цвет2, ... Имитация точечного свечения, объемных сфер, виньетирования
conic-gradient() По окружности вокруг центральной точки (по часовой стрелке) [from угол at позиция], цвет1, цвет2, ... Круговые диаграммы, цветовые колеса, конусные блики металла
repeating-linear-gradient() Бесконечное повторение линейного отрезка вдоль прямой оси [направление], цвет1 стоп1, цвет2 стоп2 Полосатые фоны, диагональная штриховка, предупреждающие ленты
repeating-radial-gradient() Концентрическое повторение колец от центра к периферии [форма размер at позиция], цвет1 стоп1, цвет2 стоп2 Мишени, круги на воде, радиальные геометрические паттерны
repeating-conic-gradient() Циклическое повторение секторов по кругу на 360 градусов [from угол at позиция], цвет1 стоп1, цвет2 стоп2 Лучевые фоны, шестеренки, гильоширные сетки

Базовые функции градиентных переходов

Линейный градиент вызывается функцией linear-gradient() и строит переход вдоль воображаемой прямой оси, проходящей через блок. Все точки плоскости, расположенные перпендикулярно этой оси, получают одинаковый цвет. Браузер последовательно растягивает заданные оттенки от начальной до конечной точки пересечения прямой с границами контейнера:

background-image: linear-gradient(direction, color-stop1, color-stop2);

Радиальный переход формируется функцией radial-gradient() . В отличие от линейной модели, цвета здесь расходятся из единого центра во все стороны. Линии одинакового цвета образуют вложенные друг в друга концентрические круги или эллипсы. Математически оттенок каждого пикселя зависит от его удаленности от центральной координаты:

background-image: radial-gradient(shape size at position, color-stop1, color-stop2);

Конический градиент генерируется через conic-gradient() . Хотя он также привязан к центральной точке, вектор изменения цвета направлен не от центра к краям, а по дуге окружности. Оттенки плавно сменяют друг друга по мере вращения луча вокруг центра по часовой стрелке. В результате линии равного цвета выглядят как лучи, расходящиеся из одной вершины:

background-image: conic-gradient(from angle at position, color-stop1, color-stop2);

Циклические вариации и повторяющиеся паттерны

Стандартные градиентные функции заполняют пространство между первой и последней точкой один раз, а оставшуюся область за пределами крайних координат заливают сплошным цветом крайней точки. Для создания периодических текстур используются функции с префиксом repeating- : repeating-linear-gradient() , repeating-radial-gradient() и repeating-conic-gradient() .

Математическая логика повторения опирается на разницу координат между первой и последней цветовой точкой. Это расстояние берется за длину одного цикла. Если начальный оттенок зафиксирован на отметке 0 пикселей, а конечный - на 20 пикселях, браузер сформирует градиентный отрезок шириной 20 пикселей и продублирует его бесконечное количество раз до полного заполнения контейнера. Для корректной генерации паттерна в коде обязательно задаются явные позиции крайних точек, иначе цикл займет все 100 процентов длины и повторение не проявится визуально.

Многослойные переходы и сеточные структуры Mesh Gradients

Свойства фона в CSS допускают передачу нескольких изображений одновременно через запятую в рамках одного правила (механика Multiple Backgrounds). Поскольку градиент является подтипом изображения, в одну декларацию можно объединить произвольное количество линейных, радиальных и конических функций.

При совмещении нескольких слоев действуют строгие правила наложения и видимости:

  • Порядок записи в коде определяет ось Z: первый указанный градиент рендерится самым верхним слоем ближе к зрителю, а последний в списке становится нижней подложкой.
  • Чтобы верхние слои не перекрывали нижние полностью, в их цветовых точках должны использоваться полупрозрачные или полностью прозрачные оттенки.
  • Каждый градиент в списке рассчитывается независимо и может иметь собственный тип функции, ориентацию и локальный центр.

Комбинирование нескольких радиальных переходов с полупрозрачными краями на одном холсте используется для создания сложных сеточных заливок - Mesh Gradients. В такой структуре несколько цветовых пятен разнесены по разным углам контейнера, а их края плавно затухают до полной прозрачности. В местах пересечения лучей браузер смешивает цвета верхних и нижних слоев, формируя сложный нелинейный рисунок:

background-image: 
  radial-gradient(at top left, rgba(255, 0, 128, 0.7), transparent 70%),
  radial-gradient(at bottom right, rgba(0, 200, 255, 0.7), transparent 70%),
  linear-gradient(to right, #1a1a2e, #16213e);

В приведенной структуре два радиальных пятна формируют мягкое свечение по диагональным углам, а замыкающий линейный градиент без прозрачности выступает сплошным базовым фоном, исключая просвечивание родительского контейнера.

Настройка направления, угла и геометрии градиентной линии

Пространственное распределение оттенков внутри выбранной функции зависит от вектора распространения, радиуса охвата и точки отсчета. Первый аргумент любой градиентной функции задает геометрический каркас перехода, определяя положение осей и границ относительно размеров контейнера.

Вектор и угловые единицы в линейных переходах

В основе функции linear-gradient() лежит градиентная линия - воображаемый вектор, проходящий через геометрический центр блока. Вдоль этой прямой откладываются цветовые точки, а сами полосы цвета располагаются строго перпендикулярно ей. Начальная и конечная точки градиентной линии определяются пересечением вектора с перпендикулярами, опущенными из ближайших противоположных углов контейнера. За счет такой геометрии первый и последний оттенки гарантированно заполняют крайние углы элемента при любом наклоне оси.

Ориентация градиентной линии (direction) задается двумя способами: через ключевые слова с предлогом to или через точные угловые единицы. Если параметр направления опущен, по умолчанию применяется вертикальный переход сверху вниз ( to bottom ).

Ключевые слова указывают сторону или угол контейнера, куда направлен вектор:

  • Ортогональные направления: to top (снизу вверх), to bottom (сверху вниз), to left (справа налево), to right (слева направо).
  • Диагональные комбинации из двух слов: to top left , to top right , to bottom left , to bottom right . При использовании двойных ключевых слов угол наклона градиентной линии рассчитывается динамически в зависимости от пропорций блока: вектор располагается так, чтобы линия смены цветов на отметке 50% проходила строго через два соседних угла. В прямоугольном блоке с разной шириной и высотой направление to top right не равно фиксированному углу 45deg .

Для жесткой фиксации наклона независимо от соотношения сторон контейнера используются числовые значения типа данных <angle> . В тригонометрии CSS нулевая отметка направлена вертикально вверх, а положительное приращение отсчитывается по часовой стрелке (отрицательные значения вращают вектор против часовой стрелки). В спецификации доступны четыре единицы измерения угла:

Единица измерения Синтаксис в CSS Полный круг Вверх Вправо Вниз (по умолчанию) Влево
Градусы deg 360deg 0deg 90deg 180deg 270deg (или -90deg )
Градианы grad 400grad 0grad 100grad 200grad 300grad
Радианы rad 6.2832rad 0rad 1.5708rad 3.1416rad 4.7124rad
Обороты turn 1turn 0turn 0.25turn 0.5turn 0.75turn

При верстке адаптивных блоков выбор между 45deg и to top right влияет на поведение фона при изменении ширины экрана: фиксированный градус сохраняет угол наклона полос постоянным, тогда как ключевое слово подстраивает диагональ под габариты элемента.

Форма, размер и позиционирование радиальных градиентов

В функции radial-gradient() градиентный луч выходит из центральной точки во всех направлениях, поэтому вместо угла наклона первый аргумент объединяет сразу три геометрических параметра: форму ( shape ), размер конечного контура ( size ) и координаты центра ( position ). Общий шаблон записи выглядит как radial-gradient(shape size at position, ...) .

Параметр формы принимает одно из двух значений:

  • ellipse - значение по умолчанию, при котором контур растягивается пропорционально ширине и высоте блока.
  • circle - формирует правильную окружность с одинаковым радиусом по обеим осям даже внутри вытянутого прямоугольного контейнера.

Размер радиального перехода задает точку, где заканчивается стопроцентная отметка градиентного луча. Помимо прямого указания радиуса в пикселях или процентах (для круга - одно число в px , для эллипса - два значения через пробел для горизонтальной и вертикальной полуосей), применяются четыре дескриптора протяженности:

Ключевое слово размера Геометрическое правило расчета границы Визуальный результат в контейнере
closest-side Контур касается ближайшей к центру стороны блока (для эллипса - ближайших вертикальной и горизонтальной сторон). Компактное пятно, полностью вписанное в пределы контейнера без обрезки краев.
farthest-side Внешняя граница тянется до самой удаленной от центра стороны элемента. Крупное свечение, выходящее за пределы ближних границ при смещенном центре.
closest-corner Край градиента проходит ровно через ближайший к центру угол контейнера. Умеренное заполнение, промежуточное между касанием ближней стороны и полным охватом.
farthest-corner Контур расширяется до самого дальнего угла блока (значение по умолчанию). Плавный переход гарантированно покрывает всю площадь элемента до крайних точек.

Координаты центра задаются после ключевого слова at по правилам позиционирования фоновых изображений. Если блок at position не указан, свечение исходит из точки at center (или at 50% 50% ). Сместить источник можно словесными указателями ( at top left , at bottom , at right center ), процентными соотношениями ( at 20% 80% ) или абсолютными пиксельными сдвигами от верхнего левого угла ( at 40px 120px ). Допускаются также отрицательные координаты и значения свыше ста процентов, что позволяет вынести ядро радиального свечения за рамки самого блока:

background-image: radial-gradient(circle closest-corner at 75% 25%, #ff7e5f, #feb47b);

Начальный угол и точка вращения в конических градиентах

Геометрия функции conic-gradient() строится вокруг центральной оси вращения, а цвета распределяются по окружности. Для настройки ориентации конуса в первом аргументе комбинируются два параметра: начальный угол поворота с префиксом from и координаты вершины конуса с префиксом at .

По умолчанию отсчет начинается с вертикального луча, направленного строго вверх ( from 0deg ), вокруг центральной точки ( at 50% 50% ). Параметр from <angle> поворачивает всю цветовую развертку по часовой стрелке на заданное количество градусов, радиан, градиан или оборотов. Параметр at <position> смещает вершину конуса в любую точку плоскости по тем же координатным правилам, что и в радиальных переходах.

При одновременном использовании обоих параметров сначала записывается угол поворота, а затем через пробел указывается позиция центра без разделительной запятой между ними:

background-image: conic-gradient(from 90deg at 0% 50%, #00c6ff, #0072ff, #00c6ff);

В этой декларации вершина конуса прижата к середине левого края контейнера ( 0% 50% ), а стартовый луч повернут на четверть оборота вправо ( 90deg ), за счет чего лучи веером расходятся от левой стенки к правой части блока.

Управление цветовыми точками, форматами цвета и интерполяцией

За геометрическими аргументами функции градиента следует список цветовых точек остановки ( color stops ), перечисляемых через запятую. Каждая такая точка определяет конкретный цвет и его точное местоположение на градиентной оси, радиальном луче или конической окружности. Для формирования минимального перехода требуются две точки, однако спецификация CSS не ограничивает их максимальное количество, что дает возможность конструировать сложные многосоставные переходы.

Устройство цветовых точек и правила позиционирования

Базовый синтаксис отдельной цветовой точки включает значение цвета и необязательную координату остановки ( stop position ), записанные через пробел. В линейных и радиальных функциях позиция задается в процентах ( % ) от общей длины градиентной линии или в абсолютных и относительных единицах длины ( px , em , rem , vw ). В конических градиентах положение точек отсчитывается по дуге и указывается в процентах или угловых единицах ( deg , rad , grad , turn ).

Если координаты не указаны явно, браузер распределяет оттенки равномерно. Первая точка автоматически привязывается к отметке 0% , последняя - к 100% , а все промежуточные делят ось на равные отрезки. Добавление третьей и последующих точек формирует многоцветные переходы ( multi-stop ): двухтоновые ( duotone ), трехтоновые ( tritone или 3-Color-Gradient ) и полихромные шкалы.

/* Равномерное распределение трех цветов: 0%, 50%, 100% */
background-image: linear-gradient(90deg, #ff4e50, #f9d423, #24c6dc);

/* Явное смещение координат остановки */
background-image: linear-gradient(90deg, #ff4e50 15%, #f9d423 40%, #24c6dc 90%);

На участках от 0% до первой сдвинутой точки (в примере выше - от 0% до 15% ) и от последней точки до конца оси (от 90% до 100% ) градиент заполняется сплошным чистым цветом соответствующих крайних точек без смешивания.

Стандарт CSS Images Level 4 допускает указание сразу двух координат для одного цвета через пробел ( double-position color stops ). Такая запись создает плато сплошного цвета между двумя указанными отметками и заменяет дублирование одного и того же цветового кода в правиле:

/* Сокращенный синтаксис с двумя координатами для центрального оттенка */
background-image: linear-gradient(to right, #1a2a6c 10%, #b21f1f 30% 70%, #fdbb2d 90%);

В этом выражении оттенок #b21f1f плавно набирает полную силу к отметке 30% , остается неизменным на протяжении участка от 30% до 70% и лишь затем начинает переход к цвету #fdbb2d .

Цветовые подсказки и формирование жестких границ

По умолчанию середина цветового перехода (точка, где два соседних оттенка смешаны в пропорции 50 на 50) располагается ровно посередине между их координатами. Для смещения этого центра тяжести без добавления новой цветовой точки используются цветовые подсказки ( color hints ). Подсказка представляет собой отдельное процентное или линейное значение, записанное между двумя цветовыми точками и отделенное от них запятыми.

background-image: linear-gradient(to right, #3a1c71 0%, 20%, #ffaf7b 100%);

Здесь средняя точка смешивания двух цветов сдвинута с отметки 50% на позицию 20% . В результате в первой пятой части блока происходит быстрое изменение тона от темно-фиолетового к промежуточному, а на оставшихся 80% длины оттенок медленно доходит до персикового.

Противоположный визуальный прием - полный отказ от плавного размытия и создание резкой ступенчатой границы между цветами. Жесткая линия стыка образуется, когда координата последующей цветовой точки равна или меньше координаты предыдущей. Дистанция интерполяции сокращается до нуля, и один цвет мгновенно сменяется другим:

/* Три четкие полосы без градиентного размытия */
background-image: linear-gradient(135deg, #2b5876 0% 33.33%, #4e4376 33.33% 66.66%, #b24592 66.66% 100%);

Форматы записи цвета и управление прозрачностью

Внутри функций градиента допустимы любые валидные форматы представления цвета в CSS, которые можно свободно комбинировать в пределах одной декларации. В таблице ниже приведены основные способы записи цветовых значений и особенности их синтаксиса.

Формат цвета Пример синтаксиса Поддержка альфа-канала Практическое назначение в градиентах
HEX (6 или 3 символа) #ff5733 , #f53 Через 8 или 4 символа ( #ff573380 , #f538 ) Компактная запись сплошных базовых цветов из дизайн-макетов
Функции rgb() и rgba() rgb(255, 87, 51) , rgba(255, 87, 51, 0.5) Прямой аргумент от 0 до 1 или от 0% до 100% Точная настройка поканальной яркости и полупрозрачных наложений
Функции hsl() и hsla() hsl(11, 100%, 60%) , hsla(11, 100%, 60%, 0.5) Прямой аргумент прозрачности в старом и новом синтаксисе Подбор гармоничных точек перехода путем сдвига угла тона, насыщенности или светлоты
Ключевое слово transparent transparent Полная прозрачность (альфа-канал равен 0 ) Быстрое сведение градиента в невидимую область
Ключевое слово currentColor currentColor Зависит от унаследованного свойства color Динамическая привязка оттенка градиента к текущему цвету текста элемента

Точки с настроенным альфа-каналом ( opacity stops ) отвечают за плавное затухание градиента и формирование вуалей поверх фоновых изображений или других градиентных слоев. При переходе к ключевому слову transparent важно учитывать его математическое значение: по спецификации CSS transparent является псевдонимом полностью прозрачного черного цвета - rgba(0, 0, 0, 0) .

В современных браузерах расчет градиента с участием прозрачности выполняется с предварительным умножением альфа-канала (premultiplied alpha), что предотвращает появление грязного темного ореола. Однако для сохранения полного контроля над оттенком затухания надежнее переводить начальный цвет в ту же RGB- или HSL-комбинацию с нулевым альфа-каналом вместо абстрактного transparent :

/* Чистое затухание белого цвета без риска потемнения на промежуточных шагах */
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);

Цветовые пространства и алгоритмы интерполяции

Визуальное качество перехода между двумя точками напрямую зависит от того, в каком цветовом пространстве рассчитываются промежуточные оттенки (процесс интерполяции). Исторически все CSS-градиенты по умолчанию вычисляются в стандартном пространстве sRGB . При линейном смешивании противоположных или контрастных по тону насыщенных цветов (например, чистого синего и желтого либо красного и бирюзового) в пространстве sRGB кривая проходит через центральную обесцвеченную зону. В результате в середине градиента возникает заметный грязно-серый провал, где цвета теряют яркость и насыщенность.

Спецификация CSS Color Level 4 решает эту проблему за счет явного указания цветового пространства интерполяции с помощью конструкции in <color-space> , которая записывается в первом аргументе функции градиента:

  • Пространство srgb и его линейная вариация srgb-linear - базовые прямоугольные модели, подходящие для близких по тону или монохромных переходов.
  • Перцептивно равномерное пространство oklab - прямоугольная система координат, учитывающая особенности восприятия светлоты человеческим глазом. При смешивании в oklab переход от одного цвета к другому сохраняет ровную визуальную яркость на всей дистанции без серых провалов в центре.
  • Цилиндрическое перцептивное пространство oklch - модель, оперирующая светлотой (Lightness), цветностью (Chroma) и углом цветового тона (Hue). Интерполяция в oklch перемещает оттенки по цветовому кругу, удерживая высокую насыщенность промежуточных тонов.

В цилиндрических пространствах (таких как hsl или oklch ) переход между двумя углами цветового тона может идти по двум дугам окружности. Для управления траекторией обхода цветового круга после названия пространства добавляется модификатор пути:

  • shorter hue (применяется по умолчанию) - ведет расчет по кратчайшей дуге между двумя точками цветового круга;
  • longer hue - заставляет градиент пройти по длинной дуге, захватывая почти весь спектр радуги даже между двумя близкими оттенками;
  • increasing hue и decreasing hue - фиксируют движение строго по возрастанию или убыванию градуса цветового тона.
/* Переход в пространстве oklab без серого провала посередине */
background-image: linear-gradient(in oklab to right, #0052d4, #fdeff9);

/* Яркий спектральный переход в oklch по длинной дуге цветового круга */
background-image: linear-gradient(in oklch longer hue 90deg, #ff0055, #ffaa00);

Выбор подходящего пространства интерполяции позволяет получать чистые переходы между комплементарными цветами с помощью всего двух крайних точек остановки, избавляя от необходимости вручную добавлять промежуточные корректирующие оттенки для маскировки тусклых участков.

Интеграция сгенерированного CSS-кода в верстку и свойства элементов

Сгенерированная функция градиента возвращает объект типа <image> , поэтому полученная CSS-декларация вставляется в таблицы стилей везде, где спецификация допускает использование растровых или векторных фоновых изображений. Чаще всего код назначается через свойства background-image или универсальное сокращение background , но этим его применение в верстке не ограничивается.

Базовые фоновые свойства и резервный цвет

При переносе готового кода в рабочую таблицу стилей важно учитывать разницу между сокращенным свойством background и целевым background-image . Свойство background перезаписывает все фоновые параметры элемента, сбрасывая неуказанные значения к исходным. Если для блока ранее были заданы отступы фона или фиксация при прокрутке, безопаснее передавать функцию градиента напрямую в background-image .

Перед объявлением градиента рекомендуется указывать сплошной резервный цвет через свойство background-color (или отдельной строкой перед background ). Этот цвет служит страховкой (fallback): он мгновенно окрасит блок, если таблица стилей обрабатывается в среде с ограниченной поддержкой современного синтаксиса, а также сохранит контрастность текста на участках, где в самом градиенте задействованы полупрозрачные точки остановки.

.card-surface {
  /* Сплошной резервный цвет */
  background-color: #1e293b;
  /* Основной градиентный слой */
  background-image: linear-gradient(135deg, #1e293b 0%, #3b82f6 100%);
}

Масштабирование, позиционирование и режимы наложения

По умолчанию градиентная заливка растягивается на всю область отрисовки элемента (обычно это padding-box ). Управлять геометрией отрисованного полотна позволяют сопутствующие фоновые свойства:

  • background-size - задает точные габариты градиентной ячейки в процентах, пикселях или иных единицах длины. Если уменьшить размер (например, 20px 20px ) при включенном повторении background-repeat: repeat , обычный градиент превращается в геометрический паттерн или сетку;
  • background-position - смещает область градиента относительно углов или центра контейнера. В связке с увеличенным масштабом (например, background-size: 200% 200% ) изменение координат позиции позволяет сдвигать видимый фрагмент перехода при наведении курсора;
  • background-blend-mode - определяет алгоритм попиксельного смешивания слоев внутри одного элемента, когда градиент накладывается поверх фотографии (через запятую в background-image ) или смешивается с подложкой background-color ;
  • mix-blend-mode - управляет смешиванием всего HTML-элемента (включая его градиентный фон) с нижележащими узлами DOM-дерева. Например, значение mix-blend-mode: screen убирает темные участки градиента и оставляет только светящиеся блики поверх контента страницы.

При создании тонирующих оверлеев для баннеров функцию градиента ставят первой в списке background-image , а ссылку на изображение url() - второй. Если использовать полупрозрачные цвета или подключить background-blend-mode: multiply , градиент затемнит фотографию без добавления лишних пустых тегов в HTML-разметку.

.hero-overlay {
  background-color: #0f172a;
  background-image: 
    linear-gradient(to bottom, rgba(15, 23, 42, 0.3), rgba(15, 23, 42, 0.9)),
    url('banner.jpg');
  background-size: cover;
  background-position: center;
}

Специализированные сценарии: текст, рамки и маски

Тот же самый сгенерированный код перехода можно перенаправить с заливки блока на стилизацию типографики, контуров или прозрачности элемента. В следующей таблице приведены основные CSS-свойства, принимающие функцию градиента для решения нестандартных задач оформления.

Целевая задача Основное свойство Обязательные сопутствующие правила
Окрашивание символов текста background-image background-clip: text , -webkit-background-clip: text , color: transparent (или -webkit-text-fill-color: transparent )
Градиентная рамка элемента border-image-source (или сокращение border-image ) Заданная толщина и стиль рамки ( border: 2px solid ), а также параметр нарезки border-image-slice: 1
Плавное растворение краев блока mask-image (и -webkit-mask-image ) Наличие в градиенте точек с разной прозрачностью (от плотного черного к transparent )

Градиентная заливка текста

В CSS нет отдельного свойства для градиентного цвета шрифта. Чтобы окрасить буквы, градиент накладывается как обычный фон текстового контейнера, после чего обрезается по контуру глифов с помощью background-clip: text . Чтобы сквозь буквы проступил фон, собственную заливку шрифта делают полностью прозрачной. При этом важно применять класс или инлайновый стиль непосредственно к текстовому узлу либо сделать блок строчно-блочным ( display: inline-block ), иначе градиент растянется на всю ширину родительской строки, и короткий заголовок захватит лишь малую часть цветовой палитры.

.gradient-heading {
  display: inline-block;
  background-image: linear-gradient(90deg, #ec4899, #8b5cf6);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

Оформление рамок и масок прозрачности

Для создания градиентной обводки код передается в свойство border-image с обязательным числовым коэффициентом нарезки 1 в конце объявления. Стоит учитывать особенность спецификации: стандартный border-image игнорирует скругление углов border-radius . Если требуется скругленная градиентная рамка, вместо border-image используют комбинацию из двух фонов с привязкой к разным боксам ( padding-box и border-box ) при прозрачной рамке border: 2px solid transparent .

В свойстве mask-image цветовые оттенки сгенерированного градиента игнорируются - учитывается только альфа-канал (по умолчанию в режиме mask-mode: alpha ). Участки градиента с непрозрачным цветом (например, #000000 или rgb(0, 0, 0) ) оставляют элемент видимым, а точки с transparent скрывают его, открывая фон родительского контейнера любой сложности.

/* Градиентная рамка */
.gradient-border {
  border: 3px solid transparent;
  border-image: conic-gradient(from 45deg, #06b6d4, #3b82f6, #06b6d4) 1;
}

/* Плавное затухание нижнего края блока через маску */
.fade-bottom-mask {
  -webkit-mask-image: linear-gradient(to bottom, #000000 70%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000000 70%, transparent 100%);
}

Управление палитрой через CSS-переменные

При работе с дизайн-системами и цветовыми темами (например, светлой и темной) жестко прописанные HEX-коды или значения rgb() внутри градиента усложняют поддержку стилей. Замена фиксированных оттенков в сгенерированном коде на пользовательские CSS-свойства (CSS custom properties) через функцию var() позволяет динамически менять палитру перехода без дублирования всей декларации linear-gradient() или radial-gradient() .

:root {
  --grad-start: #38bdf8;
  --grad-end: #6366f1;
  --grad-angle: 120deg;
}

[data-theme="dark"] {
  --grad-start: #0284c7;
  --grad-end: #4338ca;
}

.themed-banner {
  background-image: linear-gradient(var(--grad-angle), var(--grad-start), var(--grad-end));
}

Переменные можно подставлять как на место отдельных цветовых точек и координат остановки, так и вместо угла направления. Дополнительно внутри var() через запятую допускается указывать резервное значение (например, var(--grad-start, #38bdf8) ), которое сработает, если переменная не была объявлена у родительского элемента.

Кроссбраузерность, префиксы и устранение дефектов рендеринга

Базовый синтаксис функций linear-gradient() , radial-gradient() и conic-gradient() стандартизирован и одинаково обрабатывается актуальными версиями браузеров Chrome, Firefox, Safari, iOS Safari, Edge и Opera. Различия в отображении возникают при использовании новых возможностей спецификации CSS Images Level 4 (например, явного указания цветового пространства интерполяции), работе со старыми версиями браузерных движков или рендеринге протяженных переходов между близкими по светлоте оттенками.

Вендорные префиксы и исторический синтаксис

На этапе внедрения спецификации CSS Images Level 3 браузерные движки использовали собственные префиксы для экспериментальной поддержки градиентов: -webkit- (Chrome, Safari, iOS Safari, новые версии Opera), -moz- (Firefox) и -o- (старые версии Opera на движке Presto). Помимо самого префикса, ранние реализации отличались логикой построения координатной сетки и направления линии перехода.

В префиксном синтаксисе -webkit-linear-gradient() вместо конечного направления (например, to right ) указывалась стартовая точка ( left ), а отсчет углов велся против часовой стрелки от горизонтальной оси, где 0deg направлял вектор слева направо. В современном стандарте без префиксов 0deg соответствует направлению снизу вверх ( to top ), а вращение происходит по часовой стрелке.

В современной фронтенд-разработке дублирование свойств с префиксами -webkit- , -moz- и -o- для самих функций градиента не требуется, за исключением поддержки устаревших встраиваемых браузеров или специфических свойств вроде -webkit-mask-image и -webkit-background-clip: text . Если проект требует обратной совместимости с архивными версиями браузеров, декларации располагают по принципу каскада - от старых вариантов к стандартному правилу:

.legacy-support-gradient {
  background-color: #1e293b; /* Базовый fallback */
  background-image: -webkit-linear-gradient(left, #1e293b, #3b82f6); /* Старый синтаксис WebKit */
  background-image: -moz-linear-gradient(left, #1e293b, #3b82f6); /* Старый синтаксис Firefox */
  background-image: -o-linear-gradient(left, #1e293b, #3b82f6); /* Старый синтаксис Opera */
  background-image: linear-gradient(to right, #1e293b, #3b82f6); /* Современный стандарт */
}

Проверка поддержки через директиву @supports и fallback-значения

При использовании новых параметров - таких как интерполяция в пространствах oklch или oklab , либо сложные конические переходы в специфических окружениях - браузер, не распознавший синтаксис внутри функции, полностью проигнорирует всю строку background-image . Чтобы интерфейс сохранил читаемость, перед градиентом задают сплошной цвет через background-color или базовый вариант градиента в стандартном пространстве sRGB .

Для точечного разделения стилей между браузерами с разным уровнем поддержки спецификаций применяется условная директива @supports (или метод CSS.supports() в JavaScript). Она проверяет, способен ли парсер браузера обработать конкретную декларацию, прежде чем применить блок правил:

.adaptive-gradient {
  /* Базовый градиент для всех браузеров */
  background-image: linear-gradient(90deg, #4f46e5, #06b6d4);
}

/* Переопределение для браузеров с поддержкой интерполяции в oklch */
@supports (background-image: linear-gradient(in oklch, #4f46e5, #06b6d4)) {
  .adaptive-gradient {
    background-image: linear-gradient(in oklch 90deg, #4f46e5, #06b6d4);
  }
}

В следующей таблице приведена совместимость основных градиентных функций и связанных с ними возможностей в современных браузерных движках.

Функция или параметр Chrome / Edge / Opera (Blink) Firefox (Gecko) Safari / iOS Safari (WebKit) Рекомендуемый fallback
linear-gradient() , radial-gradient() Полная поддержка без префиксов Полная поддержка без префиксов Полная поддержка без префиксов Сплошной цвет в background-color
conic-gradient() Полная поддержка Полная поддержка Полная поддержка Радиальный градиент или сплошной цвет для архивных систем
Интерполяция in oklab / in oklch Поддержка в современных релизах Поддержка в современных релизах Поддержка в современных релизах Классический градиент в sRGB перед блоком @supports
Градиентная обрезка по тексту ( background-clip: text ) Требуется -webkit-background-clip в части версий Полная поддержка стандартного свойства Требуется -webkit-background-clip Однотонный цвет текста через color

Причины возникновения и устранение ступенчатости (Color Banding)

При растягивании плавного перехода между близкими по тону или темными оттенками на большую площадь экрана (например, от #0f172a к #1e293b на всю ширину окна) вместо гладкой заливки часто появляются заметные глазу четкие полосы - эффект ступенчатости (color banding). Дефект возникает из-за ограничений стандартной глубины цвета дисплеев (8 бит на канал в пространстве sRGB), где каждый цветовой канал способен передать только 256 дискретных уровней яркости. Если расстояние между двумя соседними оттенками на экране составляет десятки пикселей, а разница в значениях RGB между ними равна всего нескольким единицам, графическому движку не хватает промежуточных полутонов для сглаживания границы.

Для минимизации полосатости при генерации и внедрении CSS-градиентов применяют несколько технических приемов:

  • Добавление промежуточных цветовых точек (color stops). Ручная вставка дополнительных оттенков с небольшим смещением по тону или насыщенности между начальной и конечной точками разбивает линейную траекторию перехода. Движок браузера пересчитывает интерполяцию на более коротких отрезках, что делает границы между полосами менее регулярными.
  • Переключение цветового пространства интерполяции. Использование модификаторов in oklab или in oklch внутри функции градиента заставляет браузер рассчитывать промежуточные цвета с учетом перцептивной светлоты. Это выравнивает скорость изменения яркости по всей длине вектора и уменьшает резкие скачки оттенков в темных диапазонах.
  • Увеличение амплитуды оттенков или добавление микроконтраста. Если дизайн позволяет, увеличение разницы по светлоте или легкий сдвиг цветового тона (Hue) между крайними точками предоставляет алгоритму рендеринга больше уникальных цветовых комбинаций на единицу длины.
  • Наложение микротекстуры шума (дизеринг). Визуально разрушить четкие границы между ступенями помогает полупрозрачный слой монохромного шума (в формате SVG-фильтра feTurbulence или легковесного паттерна), наложенный поверх градиента через многослойный фон (Multiple Backgrounds) с режимом смешивания overlay или soft-light . Случайное распределение пикселей на стыках полос имитирует плавный переход.
/* Снижение banding-эффекта за счет интерполяции в oklab и промежуточной точки */
.smooth-dark-gradient {
  background-color: #0f172a;
  background-image: linear-gradient(
    in oklab 135deg,
    #0f172a 0%,
    #162032 50%,
    #1e293b 100%
  );
}

Применение градиентов в UI/UX-дизайне и требования доступности

В проектировании интерфейсов сгенерированный код градиента выполняет утилитарную функцию: задает визуальную иерархию, отделяет функциональные слои друг от друга и имитирует направленное освещение на плоском экране. Выбор геометрии и прозрачности зависит от того, какой компонент оформляется - фоновый контейнер, интерактивный элемент или индикатор состояния.

Сценарии использования в интерфейсных компонентах

На первом экране страницы (hero-секциях) градиенты заменяют тяжелые растровые фоны или служат затемняющей подложкой под типографику. В карточках товаров или информационных блоках (card) направленный переход под углом от верхнего левого угла к нижнему правому создает иллюзию объема и выделяет карточку на монотонном фоне страницы. Для акцентных кнопок (CTA) применяют переходы с повышенной насыщенностью, где смещение светлой точки к верхнему краю имитирует блик на выпуклой поверхности и привлекает внимание к целевому действию.

Специфические визуальные стили и состояния загрузки опираются на точное управление прозрачностью и светом в градиентной декларации:

  • Стиль glassmorphism. Эффект матового стекла строится на сочетании свойства backdrop-filter: blur() и линейного градиента с альфа-каналом. Переход между белым цветом с непрозрачностью 0.4 в начале и 0.1 в конце вектора под углом 135deg создает диагональный световой блик, без которого полупрозрачный блок сливается с фоном.
  • Стиль neumorphism. Мягкая пластиковая выпуклость или вдавленность элемента формируется не только внешними тенями, но и фоновым градиентом самой поверхности. Если источник света расположен слева вверху, выпуклый элемент получает линейный переход от чуть более светлого оттенка базового фона к чуть более темному по диагонали.
  • Скелетоны загрузки (skeleton screens). Временные заглушки контента используют трехточечный линейный градиент, где центральная точка светлее крайних. За счет узкого диапазона координат центральной точки формируется световая полоса, имитирующая процесс подгрузки данных.
/* Применение полупрозрачного градиента для карточки в стиле glassmorphism */
.glass-card {
  background-image: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.4) 0%,
    rgba(255, 255, 255, 0.08) 100%
  );
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

Принципы подбора гармоничных цветовых сочетаний

Чтобы переход выглядел естественно и не создавал визуального шума, опорные точки подбирают по правилам цветового круга. В зависимости от задачи компонента используют три базовые схемы построения палитры, параметры которых представлены в таблице.

Схема сочетания Принцип выбора оттенков на цветовом круге Визуальный характер и область применения в UI
Монохроматическая Один цветовой тон (Hue) при изменении светлоты (Lightness) и насыщенности (Saturation) между точками Спокойный, предсказуемый переход без резких цветовых сдвигов. Подходит для фонов карточек, боковых панелей, таблиц и компонентов в стиле neumorphism.
Аналоговая Соседние сектора цветового круга с шагом от 15 до 60 градусов (например, от синего к фиолетовому или бирюзовому) Динамичный, но органичный переход без грязных промежуточных зон. Применяется в hero-секциях, CTA-кнопках, обложках и акцентных бейджах.
Дополнительная (комплементарная) Противоположные точки цветового круга с разницей около 180 градусов Максимальный цветовой контраст. Требует добавления промежуточной точки из соседнего сектора или работы в перцептивных пространствах, чтобы избежать серого провала в центре. Используется в промо-баннерах и иллюстративных блоках.

Обеспечение доступности и читаемости текста по стандарту WCAG 2.1

Размещение текста поверх градиентной заливки усложняет контроль читаемости, так как плотность и яркость фона меняются под каждой буквой. Руководство WCAG 2.1 устанавливает минимальный коэффициент цветового контраста: не менее 4.5:1 для обычного текста и 3:1 для крупного текста (от 18pt или от 14pt при жирном начертании) на уровне соответствия AA. Для уровня AAA требования повышаются до 7:1 и 4.5:1 соответственно.

Поскольку в самой функции градиента нет единого фонового цвета, проверка контрастности выполняется по наихудшему сценарию. Если на фоне размещен белый текст, коэффициент контраста рассчитывается относительно самой светлой точки перехода (color stop) и промежуточных зон высокой светлоты. Если текст темный - за точку отсчета берется самый темный участок градиента. Когда текстовый блок перекрывает весь вектор перехода, условие стандарта должно выполняться в каждой его точке.

Помимо светлоты, на восприятие текста влияет насыщенность: сочетание двух чистых цветов высокой насыщенности с близкой яркостью (например, ярко-красного и ярко-синего) вызывает хроматическую аберрацию, из-за которой контуры шрифта расплываются даже при формальном соблюдении контраста. Чтобы сохранить читаемость без изменения палитры бренда, прибегают к ограничению амплитуды светлоты в зоне текста, сдвигу координат светлых точек за пределы текстового контейнера или добавлению полупрозрачного темного слоя-подложки перед основным градиентом.

Способы CSS-анимации градиентных переходов

Так как результат функции градиента воспринимается браузером как сгенерированное растровое изображение, стандартная CSS-интерполяция через свойство transition напрямую к background-image не применяется - браузер просто мгновенно заменит одну картинку на другую. Для создания плавного движения цветов в скелетонах загрузки, интерактивных кнопках или живых фонах используют два обходных технических метода.

Первый способ основан на увеличении виртуального холста фона через background-size (например, до 200% или 400%) и последующем смещении видимой области с помощью изменения background-position внутри директивы @keyframes . Этот подход не требует перерасчета самого градиента на каждом кадре и легко обрабатывается графическим процессором.

/* Анимация блика в skeleton screen через смещение позиции фона */
.skeleton-box {
  background-color: #e2e8f0;
  background-image: linear-gradient(
    90deg,
    #e2e8f0 0%,
    #f8fafc 50%,
    #e2e8f0 100%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite linear;
}

@keyframes shimmer {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

Второй способ использует типизированные CSS custom properties и правило @property . Если зарегистрировать переменную с синтаксисом <color> , <percentage> или <angle> , движок браузера получает информацию о типе данных и может плавно интерполировать значения углов вращения или отдельных цветовых точек в реальном времени при наведении курсора или по ключевым кадрам.

/* Плавное изменение цвета и угла градиента через типизированные CSS custom properties */
@property --grad-angle {
  syntax: '<angle>';
  initial-value: 135deg;
  inherits: false;
}

@property --stop-color {
  syntax: '<color>';
  initial-value: #2563eb;
  inherits: false;
}

.interactive-cta {
  background-image: linear-gradient(var(--grad-angle), var(--stop-color), #7c3aed);
  transition: --grad-angle 0.4s ease, --stop-color 0.4s ease;
}

.interactive-cta:hover {
  --grad-angle: 180deg;
  --stop-color: #db2777;
}

Нужен другой
инструмент для графики?

Откройте раздел инструментов для изображений и графики и выберите подходящую задачу.

Все инструменты графики