Линейный градиент
Опубликовано:
Градиентом называют плавный переход от одного цвета к другому, причём самих цветов и переходов между ними может быть несколько. С помощью градиентов создаются самые причудливые эффекты веб-дизайна, например, псевдотрёхмерность, блики, фон и др. Также с градиентом элементы смотрятся более симпатично, чем однотонные.
Отдельного свойства для добавления градиента нет, поскольку он считается фоновым изображением, поэтому добавляется через свойство background-image или универсальное свойство background. Среди браузеров нет единой поддержки градиентов, так что для каждого придётся добавить отдельную строку, как показано в примере 1.
Пример 1. Градиент
HTML5CSS3IE 9IE 10Cr 13Op 11Sa 5Fx 7
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Градиент</title>
<style>
.gradient {
background: #fefcea; /* Для старых браузров */
background: -moz-linear-gradient(top, #fefcea, #f1da36); /* Firefox 3.6+ */
/* Chrome 1-9, Safari 4-5 */
background: -webkit-gradient(linear, left top, left bottom,
color-stop(0%,#fefcea), color-stop(100%,#f1da36));
/* Chrome 10+, Safari 5.1+ */
background: -webkit-linear-gradient(top, #fefcea, #f1da36);
background: -o-linear-gradient(top, #fefcea, #f1da36); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #fefcea, #f1da36); /* IE10 */
background: linear-gradient(top, #fefcea, #f1da36); /* CSS3 */
padding: 10px;
border: 1px solid #333;
}
</style>
</head>
<body>
<p class="gradient">Здесь обсценная идиома традиционно начинает прозаический образ,
но языковая игра не приводит к активно-диалогическому пониманию.</p>
</body>
</html>
Результат данного примера показан на рис. 1.

Рис. 1. Линейный градиент для абзаца
Практически все браузеры, за исключением старых версий Chrome и Safari имеют одинаковый синтаксис. В самом простом случае с двумя цветами продемонстрированном в примере 1 вначале пишется позиция, от которой будет начинаться градиент, затем начальный и конечный цвет.

Для записи позиции применяются ключевые слова top, bottom и left, right, а также их сочетания. Порядок слов не важен, можно написать left top или top left. В табл. 1 приведены разные позиции и тип получаемого градиента для цветов #000 и #fff, по другому от чёрного к белому.
| Позиция | Угол | Описание | Вид |
|---|---|---|---|
| top | 270deg | Сверху вниз. | ![]() |
| left | 0deg | Слева направо. | ![]() |
| bottom | 90deg | Снизу вверх. | ![]() |
| right | 180deg | Справа налево. | ![]() |
| top left | -45deg | От левого верхнего угла к правому нижнему. | ![]() |
| top right | 225deg | От правого верхнего угла к левому нижнему. | ![]() |
| bottom left | 45deg | От левого нижнего угла к правому верхнему. | ![]() |
| bottom right | -225deg | От правого нижнего угла к левому верхнему. | ![]() |
Вместо ключевого слова допускается использовать угол наклона, который показывает направление градиента. Вначале пишется положительное или отрицательное значение угла, затем к нему слитно добавляется deg.

Нулю градусов (или 360º) соответствует горизонтальный градиент слева направо, далее отсчёт ведётся против часовой стрелки.
Старые версии Chrome и Safari имеют другой синтаксис. Вначале пишется тип градиента (linear), затем указывается начальная точка, от которой идёт градиент и конечная точка, куда он направляется. После чего добавляются цвета градиента.

Для создания сложных градиентов двух цветов уже будет недостаточно, синтаксис позволяет добавлять их неограниченное количество, перечисляя цвета через запятую. При этом можно использовать прозрачный цвет (ключевое слово transparent), а также полупрозрачный с помощью формата RGBA, как показано в примере 2.
Пример 2. Полупрозрачные цвета
HTML5CSS3IE 9IE 10Cr 13Op 11Sa 5.1Fx 7
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Градиент</title>
<style>
body { background: url(images/celtic1.png); }
div {
background-image: -moz-linear-gradient(top, rgba(30,87,153,0), rgba(30,87,153,0.8),
rgba(30,87,153,1), rgba(30,87,153,1), rgba(41,137,216,1), rgba(30,87,153,1),
rgba(30,87,153,1), rgba(30,87,153,0.8), rgba(30,87,153,0));
background-image: -webkit-linear-gradient(top, rgba(30,87,153,0),rgba(30,87,153,0.8),
rgba(30,87,153,1), rgba(30,87,153,1), rgba(41,137,216,1), rgba(30,87,153,1),
rgba(30,87,153,1), rgba(30,87,153,0.8), rgba(30,87,153,0));
background-image: -o-linear-gradient(top, rgba(30,87,153,0), rgba(30,87,153,0.8),
rgba(30,87,153,1), rgba(30,87,153,1), rgba(41,137,216,1), rgba(30,87,153,1),
rgba(30,87,153,1), rgba(30,87,153,0.8),rgba(30,87,153,0));
background-image: -ms-linear-gradient(top, rgba(30,87,153,0), rgba(30,87,153,0.8),
rgba(30,87,153,1), rgba(30,87,153,1), rgba(41,137,216,1), rgba(30,87,153,1),
rgba(30,87,153,1), rgba(30,87,153,0.8), rgba(30,87,153,0));
background-image: linear-gradient(top, rgba(30,87,153,0), rgba(30,87,153,0.8), rgba(30,87,153,1),
rgba(30,87,153,1), rgba(41,137,216,1), rgba(30,87,153,1), rgba(30,87,153,1),
rgba(30,87,153,0.8),rgba(30,87,153,0));
color: #fff; padding: 10px;
}
</style>
</head>
<body>
<div>Генезис свободного стиха, несмотря на внешние воздействия,
отталкивает словесный метаязык.</div>
</body>
</html>
Результат данного примера показан на рис. 2.

Рис. 2. Градиент с полупрозрачными цветами
Чтобы точно позиционировать цвета в градиенте, после значения цвета указывается его положение в процентах, пикселах или других единицах. Например, запись red 0%, orange 50%, yellow 100% означает, что градиент начинается с красного цвета, затем на 50% переходит в оранжевый, а затем до конца в жёлтый. Для простоты крайние единицы вроде 0% и 100% можно не писать, они подразумеваются по умолчанию. В примере 3 показано создание градиентной кнопки, в которой положение второго цвета из трёх задано как 36%.
Пример 3. Градиентная кнопка
HTML5CSS3IE 9IE 10Cr 13Op 11Sa 5Fx 7
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Кнопка</title>
<style>
button {
background: #b5bdc8;
background: -moz-linear-gradient(top, #b5bdc8 0%, #828c95 36%, #28343b 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b5bdc8),
color-stop(36%,#828c95), color-stop(100%,#28343b));
background: -webkit-linear-gradient(top, #b5bdc8 0%, #828c95 36%, #28343b 100%);
background: -o-linear-gradient(top, #b5bdc8 0%, #828c95 36%, #28343b 100%);
background: -ms-linear-gradient(top, #b5bdc8 0%, #828c95 36%, #28343b 100%);
background: linear-gradient(top, #b5bdc8 0%, #828c95 36%, #28343b 100%);
font-size: 16px; /* Размер шрифта */
padding: 10px 20px; /* Поля вокруг текста */
color: #fff; /* Цвет текста */
border: 1px solid #333; /* Параметры рамки */
border-radius: 20px; /* Радиус скругления */
}
</style>
</head>
<body>
<button>Нажми меня нежно</button>
</body>
</html>
Результат данного примера показан на рис. 3.

Рис. 3. Градиентная кнопка
За счёт задания положения цвета можно получить резкие переходы между цветами, что в итоге даёт набор однотонных полосок. Так, для двух цветов надо указать четыре цвета, первые два цвета одинаковы и начинаются от 0% до 50%, оставшиеся цвета также одинаковы меж собой и продолжаются от 50% до 100%. В примере 4 полоски добавляются в качестве фона веб-страницы. Из-за того, что крайние значения подставляются автоматически их можно не указывать, так что достаточно написать всего-лишь два цвета.
Пример 4. Однотонные полоски
HTML5CSS3IE 9IE 10Cr 13Op 11Sa 5.1Fx 7
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Горизонтальные полоски</title>
<style>
body {
background-color: #f0f0f0; /* Цвет фона */
background-image: -moz-linear-gradient(transparent 50%, #a3e5a3 50%);
background-image: -o-linear-gradient(transparent 50%, #a3e5a3 50%);
background-image: -webkit-linear-gradient(transparent 50%, #a3e5a3 50%);
background-image: -ms-linear-gradient(transparent 50%, #a3e5a3 50%);
}
</style>
</head>
<body>
<p>Типичная европейская буржуазность и добропорядочность
изящно иллюстрирует официальный язык.</p>
</body>
</html>
Результат данного примера показан на рис. 4. Обратите внимание, что один из цветов градиента задан прозрачным, поэтому он меняется косвенно через цвет фона веб-страницы.

Рис. 4. Фон из горизонтальных полосок
Градиенты достаточно популярны среди веб-дизайнеров, но их добавление усложняется разными свойствами под каждый браузер и указанием множества цветов. Чтобы вам было проще создавать градиенты и вставлять их в код, рекомендую сайт www.colorzilla.com/gradient-editor с помощью которого легко настроить градиенты и сразу получить нужный код. Имеются готовые шаблоны (Presets), просмотр результата (Preview), настройка цветов (Adjustments), конечный код (CSS), который поддерживает IE через фильтры. Для тех, кто работал в Фотошопе или другом графическом редакторе, создание градиентов покажется плёвым делом, остальным не составит труда быстро разобраться. В общем, всячески рекомендую.







