Градиенты
CSS-градиенты — это изображения, генерируемые кодом:
linear-gradient,radial-gradient,conic-gradientи ихrepeating-*версии. Градиенты не требуют загрузки файлов и идеально масштабируются.
Зачем нужно
Градиенты заменяют растровые изображения для плавных переходов цветов, создают декоративные фоны, паттерны и сложные визуальные эффекты без лишних HTTP-запросов. Это чистый CSS — лёгкий, масштабируемый, анимируемый.
Где используется
- Фоны секций, кнопок, карточек
- Hero-секции
- Декоративные полосы и паттерны
- Оверлеи поверх изображений
- Маски и затухания
- Диаграммы и прогресс-бары
Предпосылки
- Цвета в CSS — форматы цветов
- Фоны — свойство background-image
linear-gradient — линейный градиент
Базовый синтаксис
/* Сверху вниз (по умолчанию) */
.basic {
background: linear-gradient(red, blue);
}
/* С направлением */
.right {
background: linear-gradient(to right, red, blue);
}
/* По диагонали */
.diagonal {
background: linear-gradient(to bottom right, red, blue);
}
/* С углом */
.angle {
background: linear-gradient(45deg, red, blue);
}
Направления
| Синтаксис | Угол | Описание |
|---|---|---|
to top |
0deg |
Снизу вверх |
to right |
90deg |
Слева направо |
to bottom |
180deg |
Сверху вниз (default) |
to left |
270deg |
Справа налево |
to top right |
~45deg | В правый верхний угол |
135deg |
135deg | Произвольный угол |
Color Stops (точки цвета)
/* Несколько цветов */
.rainbow {
background: linear-gradient(
to right,
red, orange, yellow, green, blue, indigo, violet
);
}
/* С указанием позиций */
.positioned {
background: linear-gradient(
to right,
red 0%,
yellow 30%,
green 100%
);
}
/* Резкая граница — два цвета в одной точке */
.sharp {
background: linear-gradient(
to right,
#3498db 50%,
#e74c3c 50%
);
}
/* Color hints — управление серединой перехода */
.hint {
background: linear-gradient(
to right,
red,
30%, /* Серединная точка перехода */
blue
);
}
Практические примеры linear-gradient
/* Кнопка с градиентом */
.btn-gradient {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border: none;
padding: 12px 24px;
border-radius: 8px;
}
.btn-gradient:hover {
background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
}
/* Подчёркивание-градиент */
.gradient-underline {
background: linear-gradient(to right, #667eea, #764ba2);
background-size: 100% 3px;
background-position: bottom;
background-repeat: no-repeat;
padding-bottom: 4px;
}
/* Затухание текста */
.fade-bottom {
position: relative;
}
.fade-bottom::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 60px;
background: linear-gradient(to bottom, transparent, white);
}
radial-gradient — радиальный градиент
Базовый синтаксис
/* Круг из центра */
.basic {
background: radial-gradient(red, blue);
}
/* С формой */
.circle {
background: radial-gradient(circle, red, blue);
}
/* Эллипс (по умолчанию) */
.ellipse {
background: radial-gradient(ellipse, red, blue);
}
Размеры
.closest-side {
background: radial-gradient(circle closest-side, red, blue);
}
.farthest-corner {
background: radial-gradient(circle farthest-corner, red, blue);
}
/* Точный размер */
.exact {
background: radial-gradient(circle 100px, red, blue);
}
.exact-ellipse {
background: radial-gradient(200px 100px, red, blue);
}
| Размер | Описание |
|---|---|
closest-side |
До ближайшей стороны |
farthest-side |
До дальней стороны |
closest-corner |
До ближайшего угла |
farthest-corner |
До дальнего угла (default) |
Позиция центра
.top-left {
background: radial-gradient(circle at top left, red, blue);
}
.custom {
background: radial-gradient(circle at 30% 70%, red, blue);
}
.pixel {
background: radial-gradient(circle at 100px 50px, red, blue);
}
Практические примеры radial-gradient
/* Spotlight эффект */
.spotlight {
background: radial-gradient(
circle at 50% 50%,
rgba(255, 255, 255, 0.2),
transparent 60%
);
}
/* Свечение */
.glow {
background: radial-gradient(
circle at center,
rgba(102, 126, 234, 0.4) 0%,
transparent 70%
);
}
conic-gradient — конический градиент
Цвета идут по кругу (как часы):
/* Базовый */
.basic {
background: conic-gradient(red, yellow, green, blue, red);
border-radius: 50%;
width: 200px;
height: 200px;
}
/* С начальным углом */
.from {
background: conic-gradient(from 90deg, red, blue);
}
/* С позицией центра */
.at {
background: conic-gradient(from 0deg at 50% 50%, red, blue, red);
}
Практические примеры conic-gradient
/* Круговая диаграмма (pie chart) */
.pie-chart {
width: 200px;
height: 200px;
border-radius: 50%;
background: conic-gradient(
#3498db 0% 40%, /* 40% — синий */
#e74c3c 40% 70%, /* 30% — красный */
#2ecc71 70% 100% /* 30% — зелёный */
);
}
/* Цветовое колесо */
.color-wheel {
width: 200px;
height: 200px;
border-radius: 50%;
background: conic-gradient(
hsl(0, 100%, 50%),
hsl(60, 100%, 50%),
hsl(120, 100%, 50%),
hsl(180, 100%, 50%),
hsl(240, 100%, 50%),
hsl(300, 100%, 50%),
hsl(360, 100%, 50%)
);
}
/* Прогресс-кольцо */
.progress-ring {
--progress: 75%;
width: 120px;
height: 120px;
border-radius: 50%;
background: conic-gradient(
#3498db 0% var(--progress),
#eee var(--progress) 100%
);
/* Вырез в центре */
mask: radial-gradient(circle, transparent 50px, black 51px);
-webkit-mask: radial-gradient(circle, transparent 50px, black 51px);
}
repeating-* — повторяющиеся градиенты
repeating-linear-gradient
/* Полосатый фон */
.stripes {
background: repeating-linear-gradient(
45deg,
#606dbc,
#606dbc 10px,
#465298 10px,
#465298 20px
);
}
/* Линейка */
.ruler {
background: repeating-linear-gradient(
to right,
transparent,
transparent 9px,
#ccc 9px,
#ccc 10px
);
}
/* Предупреждающие полосы */
.warning {
background: repeating-linear-gradient(
-45deg,
#f1c40f,
#f1c40f 10px,
#2c3e50 10px,
#2c3e50 20px
);
}
repeating-radial-gradient
/* Концентрические круги */
.circles {
background: repeating-radial-gradient(
circle,
#3498db,
#3498db 10px,
#2980b9 10px,
#2980b9 20px
);
}
repeating-conic-gradient
/* Шахматная доска */
.checkerboard {
background: repeating-conic-gradient(
#eee 0% 25%,
#ddd 25% 50%
);
background-size: 40px 40px;
}
/* Звезда / солнце */
.starburst {
background: repeating-conic-gradient(
from 0deg,
#f1c40f 0deg 10deg,
#f39c12 10deg 20deg
);
}
Креативные паттерны
Горошек (Polka Dots)
.polka {
background:
radial-gradient(circle, #333 20%, transparent 21%),
radial-gradient(circle, #333 20%, transparent 21%);
background-size: 30px 30px;
background-position: 0 0, 15px 15px;
background-color: #f5f5f5;
}
Сетка
.grid-bg {
background:
linear-gradient(to right, rgba(0,0,0,0.05) 1px, transparent 1px),
linear-gradient(to bottom, rgba(0,0,0,0.05) 1px, transparent 1px);
background-size: 20px 20px;
}
Зигзаг
.zigzag {
background:
linear-gradient(135deg, #3498db 25%, transparent 25%) -50px 0,
linear-gradient(225deg, #3498db 25%, transparent 25%) -50px 0,
linear-gradient(315deg, #3498db 25%, transparent 25%),
linear-gradient(45deg, #3498db 25%, transparent 25%);
background-size: 100px 50px;
background-color: #ecf0f1;
}
Градиент в тексте
.gradient-text {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent; /* Fallback */
font-size: 3rem;
font-weight: 800;
}
Частые ошибки
-
Нет fallback-цвета — старые браузеры не покажут ничего:
/* ХОРОШО */ .box { background-color: #667eea; /* Fallback */ background: linear-gradient(135deg, #667eea, #764ba2); } -
Резкая граница при одинаковых color-stop — нужна 1px разница для anti-aliasing:
/* Зубчатая граница */ background: linear-gradient(red 50%, blue 50%); /* Сглаженная */ background: linear-gradient(red 50%, blue 50.5%); -
background-clip: textбез-webkit-префикса — не работает в части браузеров -
Слишком много color-stops — градиент становится мутным, используйте 2-3 цвета
-
Анимация gradient напрямую —
backgroundнельзя анимировать черезtransition. Используйтеbackground-sizeилиbackground-position:.animated { background: linear-gradient(90deg, #667eea, #764ba2, #667eea); background-size: 200% 100%; animation: shimmer 2s linear infinite; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
Практика
- Создать кнопку с
linear-gradientи hover-эффектом - Создать круговую диаграмму через
conic-gradient - Реализовать полосатый фон через
repeating-linear-gradient - Создать паттерн «горошек» из двух
radial-gradient - Сделать анимированный shimmer-эффект
- Применить градиент к тексту через
background-clip: text
Связанные темы
- Цвета в CSS — цветовые форматы для color-stops
- Фоны — background-image, multiple backgrounds
- transition -- плавные переходы — анимация фоновых свойств