Градиенты на вебстранице при помощи CSS 3 (Firefox, Safari, Chrome)

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

Для создания указанных выше градиентов в Firefox необходимо указать такие настройки:

background-image: -moz-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet);

Рассмотрим указанный метод:

-moz-linear-gradient( [<point> || <angle>], <stop>, <stop> [, <stop>]* )

  • [<point> || <angle>] — позиция начала градиента или угол. Позиция задаётся ключевыми словами left — right, top — bottom. Угол необходимо указывать в формате ARGdeg, где ARG — размер угла в градусах.
  • <stop> — цвет градиента (можно задавать в формате rgb(), #rrggbb или ключевым словом). После указания цвета, до запятой можно указать длину градиентной полосы.

Для создания радиального градиента необходимо задать такие настройки:

background-image: -moz-radial-gradient(50% 50% 45deg, circle closest-corner, red, orange, yellow, green, blue, indigo, violet);

Рассмотрим подробнее:

-moz-radial-gradient( [<position> || <angle>], [<shape> || <size>], <stop>, <stop>[, <stop>]* )

  • [<position> || <angle>] — позиция и угол градиента. Угол задаётся в том же формате, а позиция может быть задана как ключевыми словами (left, top..) или точкой в процентном формате. Верхний левый угол — 0% 0%, правый нижний 100% 100%.
  • [<shape> || <size>] — задаёт форму градиента: circle или ellipse. size — размер градиента.

size может принимать такие значения:

closest-side (contain) — окружность имеет радиус равный расстоянию от цента до ближайшей граници полотна.
closest-corner — радиус равен расстоянию от центра до ближайшего угла.
farthest-side — радиус равен расстояния до дальней граници.
farthest-corner (cover) — до дальнего угла

Для создания аналогичных эффектов в Safari или Chrome пользуются такими методами:

-webkit-gradient(type, start_point, end_point, / stop…)


-webkit-gradient(type, inner_center, inner_radius, outer_center, outer_radius, / stop…)

  • type — тип градиента. Линейный — linear, радиальный — radial.
  • start_point — точка начала линейного градиента. Задаётся комбинациями left top, right bottom, left bottom, right top.
  • end_point — точка конца линейного градиента.
  • stop — цвет градиента. Задаётся функцией color-stop(length, color). length — длина градиента заданная дробным числом.
  • inner_center — центр первого кольца радиального градиента. Задаётся теми же ключевыми словами, что и start_point. center center — центр полотна.
  • inner_radius — радиус первого кольца градиента. Задаётся числом пикселей.
  • outer_center, outer_radius — центр и радиус последнего кольца градиента. Задаются аналогично.

Для создания тех же эффектов радуги я написал такой код:

background: -webkit-gradient(linear, left top, right bottom, from(red),color-stop(0.14, orange), color-stop(0.28, yellow), color-stop(0.42, green), color-stop(0.56, blue),color-stop(0.70, indigo), to(violet));

background: -webkit-gradient(radial, center center, 0, center center, 80, from(red),color-stop(0.14, orange), color-stop(0.28, yellow), color-stop(0.42, green), color-stop(0.56, blue),color-stop(0.70, indigo), to(violet));

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

background-color: #1a82f7;

background-image: -moz-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet);

background: -webkit-gradient(linear, left top, right bottom, from(red),color-stop(0.14, orange), color-stop(0.28, yellow), color-stop(0.42, green), color-stop(0.56, blue),color-stop(0.70, indigo), to(violet));

А вот так для радиального:

background-color: #1a82f7;

background-image: -moz-radial-gradient(50% 50%, circle closest-corner, red, orange, yellow, green, blue, indigo, violet);

background: -webkit-gradient(radial, center center, 0, center center, 80, from(red),color-stop(0.14, orange), color-stop(0.28, yellow), color-stop(0.42, green), color-stop(0.56, blue),color-stop(0.70, indigo), to(violet));

Надеюсь скоро и в опере чего нибудь придумают 😉

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий