Градиент. Несложные правила вязания
красивого полотна с плавным переходом цветов
В статье использованы фотографии из Интернета: источник «поиск Гугл»
Градиент – слово от лат. gradiens , обозначает «шагающий, растущий» или направление наибольшего возрастания определенной величины, в нашем случае – цвета вязаного полотна. Проще говоря, градиентом называют плавный переход от одного цвета к другому, причем самих цветов и количество переходов может быть любым. Например, перейти от черного к белому можно в два шага, а можно и в 5 или 10 шагов, подбирая между начальным (черным) и конечным (белым) оттенки от темно-серого до серебристого и белоснежного.
Также и с любыми другими цветами и оттенками
В вязании разноцветное полотно используется в самых разных моделях и фасонах, как для детей, так и для взрослых.
В общем, море фантазии и возможностей!!!
Можно связать вещь полосками разных цветов, можно предусмотреть переход оттенков в процессе вывязывания узора, а можно подчеркнуть «изюминку» вещи только через перелив красок в обычной лицевой (или платочной) глади.
Для ПЛАВНОГО перехода от одного цвета в другой используется несложная техника сочетания нитей — меланж. Википедия определяет Меланж как «способ совмещения и переплетения разноцветных ниток для вязания». И мы для выполнения полотна градиентом должны самостоятельно меланжировать выбранные цвета пряжи: все очень просто, но эффектно и красиво!
Часто в готовом виде все равно заметны «линии переходов», очень нечеткие и расплывчатые, но визуально видимые.
Если изделие вяжется с узором, например, косами или любым другим, то «видимость» полосок расплывается, переход становится менее заметным
Вот более яркий пример для сравнения лицевой глади и рисунка
Ни в коем случае нельзя сказать, что это некрасиво – это просто факт)) все изделия в такой технике смотрятся очень классно и эффектно!
НО! Можно добиться и почти идеально плавного перелива цвета, причем в той же технике вязания!!!
Вот, например, смотрите
На самом деле все очень просто – такого эффекта можно достичь двумя способами:
- чем больше используется полутонов между основными цветами, тем красивее результат и менее заметны переходы, т.е. используя три цвета, очень сложно добиться того же итога, что и 9-тью цветами пряжи.
Как пример, имея 3 мотка *черный-серый-белый* перелив будет именно заметными полосками, а при наличии 9 цветов нитей *черный/маренго/темно-серый/серый/светло-серый/темно-серебристый/серебристый/грязно-белый/белый/белоснежный*, это будет значительно более плавный градиент.
- вязание бОльшим количеством слоев нитей, постепенно заменяя каждую из которых на новый оттенок, будет достигаться именно плавность перехода цвета.
Картинки выше – это второй способ одной и той же техники вязания.
Есть еще вариант – другая техника, например, жаккард или рисунок, где разные цвета можно вводить точечно, в каждом следующем ряду наращивая объем нового оттенка и добиться, следовательно, постепенной, очень «медленной» смены цвета.
Мы рассматриваем способ вязания градиента, где присутствует меланжирование нитей!
НЕСКОЛЬКО ПРАВИЛ для формирования «нужных» цветов при вязании градиента — меланжирования.
1.Толщина пряжи
В процессе вязания наши нити будут совмещаться в разных сочетаниях, т.е. рабочая нить будет ВСЕГДА состоять из нескольких нитей – можно взять всего 2 основных цвета пряжи, НО при этом от количества сложений будет зависеть и эффектность градиента. Т.е. при вязании в три нити переход будет обязательно более заметен, чем при вязании этой же пряжей в 6 или более сложений.
Поэтому первое правило классного результата — чем больше количество сложений нитей, тем более плавным будет переход оттенков в готовом изделии.
От этого зависит изначальный выбор пряжи — ориентируйтесь на «итоговую толщину» нити (= рабочая нить), которой будет вязаться полотно в несколько сложений: если в мотке 100 г. и длина нити составляет 400-500 м, то в три сложения толщина рабочей нити будет достаточно объемной, переходы цвета более заметны. Для такого же трехслойного варианта из нитей, каждая из которых длиной в 700-900 м в 100 г – уже толщина рабочей нити составит более тонкое полотно. Ну а при сложении в 6-8 нитей для пряжи в 1300-1500 м и более можно надеяться на практически «идеальный» результат градиента.
Ваш выбор пряжи первым делом должен предусматривать этот момент!
Но, повторюсь, это не значит, что вязание в 3 сложения некрасиво или неэффектно – все зависит от желаемой модели и вашего выбора!
Есть три цвета хлопковой пряжи, из которых должно быть связано градиентное полотно летней кофточки.
Пряжа 50% хлопок/50% вискоза, длина 425 м х 100 г. – нитью в 3 сложения я буду вязать спицами № 3,5 (возможно 4,0 в зависимости от индивидуальной плотности вязания).
Всего 2 основных цвета пряжи – Семеновская «Лидия», 100% шерсть, длина 1613 м х 100 г., цвета «Темно-синий» и «Айсберг» (бирюзовый). Будет вязаться шапочка в 8 (!) сложений
Обратите внимание, что в первом примере «полоски» от переходов цветов заметны, особенно на участке смены меланжированных и основных участков, в том время как при переходе от не очень контрастирующих оттенков «граница» более расплывчата. Т.е. при использовании бОльшего количества оттенков перелив был бы более плавным даже при малом количестве сложений рабочей нити.
Во 2-ом примере, на полотне шапочки, такой видимой «границы» цвета нет даже для резких цветовых тонов БЕЗ использования полутонов.
2. Как меланжировать нити
Т.е. как формировать «переходные» цвета нитей.
Основное правило меланжирования:
есть участки основных цветов и есть т.н. меланжированные участки вязаного полотна. Все участки вяжутся одинаковым количеством сложений (= рабочая нить): отрезки основных цветов — это сложение нитей только основных цветов, а меланжированные участки – сочетание нитей разных цветов. Каждый следующий переход осуществляется за счет замены одной из нитей в составе рабочей нити на нить другого цвета.
Например, при сложении в 5 нитей, первый переход будет осуществлен заменой одной из пяти нитей нитью другого цвета = 4 нити одного цвета + 1 нить другого цвета.
Процесс вязания выполняется так: провязав определенный вертикальный участок, меняем одну из нитей в составе рабочей нити на другую. Вяжем следующий вертикальный участок и меняем еще одну нить в составе рабочей на такую же, какой была первая замена. И так далее – постепенно заменяются все нити в составе рабочей на другой цвет.
2.1. Вяжем темной пряжей в 3 нити одинакового (сиреневого) цвета на нужную высоту*
*Как определить отрезок вязания в высоту для равномерного распределения цветов по длине изделия – ниже по тексту
Это первый участок основного цвета.
2.2. Первый переход на более светлую пряжу (розовую) = первый меланжированный участок. Для этого мы заменяем одну из трех нитей нашей рабочей нити на розовую нить – получаем тройное сложение из двух сиреневых и одной розовой нити. Так более светлая нить будет постепенно введена в полотно.
2.3. Связав этот отрезок на нужную высоту, заменяем одну нить из двух оставшихся сиреневых на розовую – получаем тройное сложение из двух розовых нитей и одной сиреневой.
Получаем полотно такого вида
2.5. Аналогичным способом будет выполняться и переход от розового цвета к белому:
— 2 розовые нити + 1 белая
— 1 розовая нить + 2 белые
— 3 белые нити
Таким образом, плавный перелив от начального темного цвета к конечному светлому завершен.
Ничего сложного и заумного)))
Это пример для вязания тремя цветами. Аналогичным способом будем меланжировать и 4 цвета (условно А, В, С, D), и переход будет более плавным, ведь отрезки будут более короткими и распределятся следующим образом:
— 4 нити А
— 3 нити А + 1 нить В
— 2 нити А + 2 нити В
— 1 нить А + 3 нити В
— 4 нити В
Соответственно и следующие отрезки переходов
Теперь становится понятно, что, чем больше нитей в составе рабочей, тем более плавным будет переход, ведь замена происходит постепенно и, следовательно, введение нового оттенка «менее» заметно. Поэтому даже вязание 2-мя основными цветами, но в бОльшем количестве сложений рабочей нити дает самый эффектный итоговый результат градиента – пример 2))
Я думаю, принцип меланжирования понятен независимо от количества основных цветов и количества переходов.
3. Как определить высоту отрезка перехода (вертикального участка полотна)
Если ваше изделие будет равномерно переходить от одного цвета к другому, т.е. все оттенки будут одинаковой высоты, то запланированную длину всего изделия (измеряем по центру изделия) от верхнего края (например, горловины кофточки или донышка шапочки) до нижнего края делим на количество основных цветов – БЕЗ учета меланжированных участков.
В вышеприведенном примере № 1 это 3 части: сиреневая, розовая и белая. Как пример, возьмем общую высоту кофточки 72 см.
72: 3 = 24 см. Т.е. полный переход от одного основного цвета к другому должен составлять 24 см. НО! в каждом таком переходе используется 3 подхода со сменой нитей = меланжированные участки (3 нити одного цвета, 2 одного + 1 второго цвета, 1 одного + 2 второго цвета), значит каждый отрезок основного цвета делим еще на 3 части = каждый вертикальный участок вязания, включая меланжированные, составляет 8 см. Ну а количество рядов – это уже в зависимости от индивидуальной плотности вязания))
Учитывая фасон, модель и количество желаемых переходов, вы уже можете изменить на свой выбор, какой из переходов должен иметь бОльшую высоту, а какие отрезки будут меньше или одинаковые. В частности, это очень важно, если количество пряжи у вас разное: какого-то цвета 4 мотка, а других только по 1-му – соответственно один из переходов будет более «затяжной», а другие – «короткие». Или просто по желанию один цвет (или один меланжированный участок) в вашей модели должен составлять 2/3 всей длины по задумке))
Для вязания разновысоких участков цветов используйте такую схему:
— определите желаемую высоту для каждого отрезка основных нитей
Пример № 2: для вязания шапочки рабочей нитью в 8 сложений из пряжи двух цветов: общая планируемая высота изделия от нижнего края до центра донышка будет составлять 23 см. Высота каждого участка основных цветов – по 7 см, соответственно «середина», т.е. ОБЩАЯ высота всех меланжированных участков для перехода от одного основного ко второму основному цвету составит 9 см.
— общий меланжированный участок для всех цветов распределите на количество переходов
В нашем примере это так:
7 нитей А + 1 нить Б
Т.е. всего будет выполнено 7 переходов на этом участке. Как рассчитывалось ранее, общая высота должна быть 9 см, соответственно каждый отдельный меланжированный участок составит ок. 1,5 см.
Все. Расчеты сделаны!
4. Плавный переход от одного участка к другому меланжированному или однотонному отрезку, если малое количество сложений в рабочей нити и достаточно контрастные оттенки пряжи.
Это тоже довольно тонкий момент вязания, ведь если количество основных цветов небольшое, например, наши 3 цвета в 1-ом примере, и колор достаточно контрастный, то, как и говорилось выше, все равно есть достаточно «четкая» линия разграничения разных оттенков.
Используйте правило постепенного введения, т.е. можно не вязать сразу весь ряд с заменой одной нити, а вводить новый оттенок за счет частичного вязания, например, провязав укороченными рядами небольшой отрезок, переход уже не будет четко «горизонтальным».
Или можно использовать технику жаккарда, буквально провязывая по 1-2 петли через 5-6 см в ряду, в следующем соответственно увеличивая участки нового цвета.
Еще один вариант – провязать новой рабочей нитью небольшой участок ряда, далее провязать также небольшой участок предыдущего оттенка, и снова прочередовать в этом же ряду «новую» и «текущую» рабочие нити, следующий ряд полностью провязать предыдущим оттенком, следующий – «новым» оттенком: так «слияние» будет не в линию, а эпизодами.
В нашем 1-ом примере особенно заметно «разграничение» участков при введении белой нити. Но «заморачиваться» с жаккардом или укороченными рядами не хочется)), есть 3 контрастных цвета и только 3 сложения рабочей нити, как и было запланировано.
При вязании я использовала как частичные отрезки вязания разными рабочими нитями (фото выше), так и такой способ: первый ряд перехода вязать в режиме чередования *2 п. предыдущего цвета (неважно меланжированный это ряд или основной) и 2 п. «нового» цвета*.
При переходе на основной участок от *1розовая + 2белые* к *3 белые нити* я вязала так: *2 п. текущего меланжированного цвета, следующие 2 п. белые* = весь ряд в шахматном порядке, и разные петельки смотрятся одинаково «пестро» в общем полотне.
Следующий ряд провязан «новым» цветом — белым. Но, конечно, можно еще увеличить «высоту» введения «нового» цвета, чтобы получить более плавный перелив!
На изнанке изделия, если вяжете по 2 петли разными раб.нитями, образуются маленькие протяжки, как при вязании жаккардовых узоров – вы можете не обращать на них внимания, ведь они короткие, но можете использовать для их «ликвидации» правила вязания жаккардов, когда протяжки «ввязываются» в текущий ряд.
Общий вид
Пример 2. Здесь во всех переходах просто выполнялась замена 1-ой нити без каких-либо дополнительных способов провязывания
Вот и все правила для вязания градиента. Несложные и достаточно эффектные для получения красивого результата в готовом изделии – вяжите разнообразные и очень аккуратные плавные цветовые переливы! Надеюсь, что как результат вашего труда, так и сам процесс вязания будет доставлять только одно удовольствие!
Работа над переводом о проекте singlediv.com показала, что некоторые инструменты CSS имеют более широкое применение, чем я привыкла думать. Но для того чтобы суметь найти это применение, необходимо четко понимать особенности свойства. Ярким примером стал linear-gradient, который Линн Фишер виртуозно использовала в своих работах.
Хотите сделать симпатичный градиентный фон на своем сайте? background-image: linear-gradient(red, blue); готово! Да, это немного скучно. Поэтому, если вы хотите чего-то большего, рекомендую вам эту с советами по css и MDN страницу. Вы еще здесь? Тогда давайте рассмотрим некоторые моменты, как на самом деле работают линейные градиенты. Для начала, давайте вспомним синтаксис, который можно использовать в функции линейного градиента:
linear-gradient ([от <угла> | до <стороны-или-угла>]?,
Функция принимает опциональный первый аргумент, который определяет угол градиента, и который можно выразить с помощью единицы измерения (градус, радиус, град, оборот) или в виде ключевого слова (стороны или угла.
После этого функция принимает список цветов.
Поле градиента
У градиентного изображения нет размеров, оно бесконечно в отличие от других фоновых изображений. Видимые размеры ему придает поле градиента, т.е. область, в которой оно отображается.Как правило, когда вы применяете фоновое изображение в виде линейного градиента к элементу DOM, этой областью является рамка границ элемента (которая является той самой областью, в которой отображается фоновый цвет).
При этом если вы используете еще и CSS-свойство background-size (размер фона) и устанавливаете его, скажем, на 200px * 200px, тогда поле градиента будет иметь этот размер и будет, по умолчанию, размещаться в левом верхнем углу DOM-элемента, если только вы также не установите background-position (положение фона).
Поэтому, читая следующие разделы, просто помните, что поле градиента не всегда расположено так же и имеет такие же размеры, как и DOM-элемент, к которому вы применяете этот градиент.
Линия градиента
В поле градиента линия, которая проходит через центр и вдоль которой распределяются цвета, называется линией градиента. Эту линию можно описать проще в ходе разъяснения угол градиента, поэтому об этом более подробно следующем разделе.Угол градиента
Вполне очевидно, что угол линейного градиента используется для определения того, в каком направлении пойдет градиент. Но давайте рассмотрим этот аспект подробнее.Если С – это центральная точка поля градиента, тогда А – это угол между вертикальной линией, проходящей через С, и линией градиента, которая также проходит через С, и вдоль которой распределяются стоп-цвета градиента.
Этот угол можно определить двумя способами:
С помощью одного из ключевых слов: to top (вверх), to bottom (вниз), to left (влево), to right (вправо), to top right (вправо вверх), to top left (влево вверх), to bottom right (вправо вниз), to bottom left (влево вниз);
Или путем определения угла с числом и единицей измерения, например 45deg (45 градусов), 1turn (1 оборот);
Если угол не указывается, то по умолчанию он направляется вниз (то есть это 180 градусов или 0,5 оборота):
На этом и на следующих изображениях поле градиента ограничено прямоугольником, а линия градиента – это жирная серая линия, которая проходит через центр, и вдоль которой отображаются цвета.
В вышеприведенном примере угол не указан, поэтому градиент от белого к красному двигается сверху вниз, что соответствует ключевому слову to bottom (вниз), как показано ниже:
И, как показано на 2 следующих изображениях, to top (вверх) соответствует углу в ноль градусов:
Еще один важный момент, который стоит учитывать, используя ключевые слова угла - что to top right (вправо вверх), например, (или любое другое ключевое слово угла) зависит от размеров поля градиента.
Логика заключается в том, что если бы вы хотели сделать градиент от красного к синему в направлении верхнего правого угла элемента, тогда такой элемент должен быть именно синим в верхнем правом углу, а фиолетовый цвет в середине градиента должен формироваться вокруг линии, которая проходит из верхнего левого в нижний правый угол. Вот как это выглядит на изображении:
Поэтому to top right (вправо вверх) не означает, что линия градиента проходит через правый верхний угол, и это даже не значит, что угол градиента равен 45 градусам!
Давайте посмотрим на то, как перемещается линия градиента при изменении угла, с помощью следующей анимации:
На этой анимации угол наклоняется от 0 до 360 градусов с шагом в 10 градусов. Низкое разрешение GIF даже позволяет лучше рассмотреть, как различные цвета отображаются в виде «линий», которые всегда перпендикулярны линии градиента.
Давайте вспомним, что мы знаем об углах градиента:
Угол измеряется между линией градиента и линией, которая выходит из центра поля градиента и движется вверх.
Поэтому 0 градусов означает вверх.
Стандартное значение угла, если оно не указывается, это вниз, что равно 180 градусам.
Ключевые слова угла зависят от размеров поля градиента.
Длина линии градиента
Прежде чем мы сможем увидеть, как распределяются цвета вдоль линии градиента, нам нужно объяснить один момент. Вы, возможно, заметили в предыдущей анимации, что цвета иногда располагаются за пределами поля градиента, что может с первого взгляда выглядеть немного странным, но это логично, если вы знаете причину.Посмотрите на пример:
Нам нужен градиент от красного к синему с углом 45 градусов, и, ввиду соотношения сторон поля градиента, линия градиента не может проходить через правый верхний угол.
Но браузер хочет (то есть, спецификации заставляют его) сделать правый верхний угол чисто синим. Если бы мы сделали так, чтобы линия градиента начиналась и заканчивалась на краях поля, тогда бы синий цвет занял большую часть поля, а градиент бы так не расплывался.
Поэтому, чтобы это сделать, линия градиента иногда должна выходить за рамки поля градиента. При этом довольно легко узнать, где она начинается, и где заканчивается. Просто начертите линию, которая проходит через ближайший угол, и которая перпендикулярна линии градиента. Точка, где эта линия пересекает линию градиента, и есть местом начала/конца.
Фактически, если вы задает ширину поля градиента W, высоту H, и угол градиента, тогда длина линии градиента составляет:
Abs(W * sin(A)) + abs(H * cos(A))
Цвета
Цвета представляют собой список, разделенный запятыми, в котором каждый элемент можно определить следующим образом:<цвет> [<процентное соотношение> | <длина>]?
Поэтому необязательно указывать, где должны размещаться цвета на линии градиента. Например:
Ни один из цветов не имеет своего положения, поэтому браузер сам определил их позиции.
На самом простом примере только с 2 цветами, цвет 1 будет размещаться на 0% (в начале линии градиента), а цвет 2 – на 100% (в конце линии градиента).
Потом, если вы добавите третий цвет, цвет 1 у вас все равно останется на 0%, цвет 2 будет на 50%, а цвет 3 – на 100%, и так далее.
В вышеприведенном примере было задано 5 стоп-цветов, и браузер рассчитал их относительное положение как 0%, 25%, 50%, 75%, 100%. Причиной тому является равномерное распределение вдоль поля градиента.
Позицию цвета можно выразить либо с помощью процентного соотношения (по отношению к размеру линии градиента) или в виде длины CSS (где действует любая единица измерения CSS).
Вот пример:
Как вы видите, каждый из 5 стоп-цветов имеет свое положение, заданное в пикселях. Эти положения рассчитываются от начала линии градиента.
Используя такие позиции, вы можете получить несколько интересных эффектов. Например, вы можете использовать градиент, чтобы не рисовать градиент как таковой, а оставить несколько цветов:
На изображении выше 7 цветов, и они установлены таким образом, чтобы следующий цвет начинался в точно той же позиции, что и последний, что означает, что браузеру не нужно заполнять пространство между двумя стоп-цветами градиентом.
Конечно, это все мило и забавно, но что произойдет, если вы смешаете позиционированные цвета с непозиционированными? Тогда вы заставите браузер работать больше и попросите его автоматически распределять цвета, для которых вы не указали позицию:
В этом простом примере второй цвет (оранжевый) не имеет позиции, поэтому браузер сам определяет ее и находит подходящее место между ранее заданным и следующим цветом. Здесь это очень просто, так как непосредственные соседи второго цвета имеют свою позицию, но если позиции есть только у некоторых цветов, или если предыдущие или следующие цвета не имеют позиции, все усложняется.
Давайте рассмотрим несколько примеров:
На примере выше только третий цвет (желтый) позиционирован на 30%. Поэтому, чтобы лучше распределить все остальные, первый размещается на 0%, последний – на 100%, а остальные цвета распределяются в промежутке (так, что оранжевый заканчивается непосредственно между 0% и 30%, а красный – между 30% и 100%).
На примере выше первый и последний цвета позиционированы, поэтому остальные равномерно распределяются между этими двумя.
Конечно, было бы слишком просто, если бы 0% и 100% были жесткими рамками, за которые нельзя выходить. Но как видно из предыдущего примера, последний цвет расположен на 120%, и поэтому все остальные цвета должны распределяться соответствующим образом относительно данной позиции (начальной точкой по умолчанию в этом случае остается 0%).
И если вы хотите заставить свой браузер работать еще больше, почему бы не указать порядок позиций?
На самом деле цвета должны иметь порядок, но ничто не запрещает вам этого не делать, и ничего ужасного не произойдет, если вы этого не сделаете. Ваш браузер просто все исправит, как показано ниже:
Начнем с первого цвета (красного), расположенного на 30%. Дальше второй цвет расположен на 10%, что уже неправильно, так как, как сказано выше, цвета должны указываться по возрастанию позиции. Поэтому здесь браузер исправляет позицию второго цвета и устанавливает его в то же положение, что и у предыдущего цвета (30%). Далее идет третий цвет (желтый), расположенный на 60%, что правильно, но за ним следует четвертый (синий) на 40%. Опять же позиция корректируется и устанавливается на то же значение, что и предыдущего позиционированного цвета.
В конечном итоге, как показано на примере выше, последний цвет (синий) позиционируется неправильно и браузер делает его позицию такой же, как и у предыдущего цвета, который в данном случае не является ни его непосредственным соседом (желтым), ни соседом цвета, который стоит перед ним (оранжевым), поэтому он должен вернуться к первом цвету (красному). Таким образом, все цвета между красным и синим установлены в положение 30% и поэтому невидимы.
Инструменты
Все скриншоты в этой статье взяты из простого инструмента , который я сделал на codepen, и который позволяет вводить функцию линейного градиента и видеть поле градиента, линию градиента, угол, а также информацию о цветах поверх элемента.В инструменте есть все виды багов и ограничений (см. комментарии в javascript), поэтому не ожидайте от него многого.
CSS-градиенты позволяют сделать фон из двух и более цветов, плавно переходящих из одного в другой. Они с нами уже достаточно давно, и имеют довольно неплохую поддержку браузерами . Большинство современных браузеров понимает их без префиксов, для IE9 и старше есть Gradient Filter , также для IE9 можно использовать SVG.
Градиенты могут быть использованы везде, где используются картинки: в фонах, в качестве буллетов списков, они могут быть заданы в content или border-image .
Linear-gradient
Линейные градиенты достаточно просты в использовании. Для самого элементарного градиента достаточно задать начальный и конечный цвета:
Background: linear-gradient(orangered, gold);
Цветов может быть любое количество больше двух. Также можно управлять направлением градиента и границами (точками остановки) цветов.
Направление можно задавать градусами или ключевыми словами.
Ключевыми словами: to top = 0deg ; to right = 90deg ; to bottom = 180deg - значение по умолчанию; to left = 270deg .
Ключевые слова можно сочетать между собой, чтобы получить диагональный градиент, например to top left .
Ниже можно увидеть как работают разные направления в растяжке от сиреневого до желтого:
Вот код самого первого квадрата, для примера:
Top-left { background: linear-gradient(to top left, purple, crimson, orangered, gold); }
Следует помнить, что to top right не то же самое, что 45deg . Цвета градиента располагаются перпендикулярно линии направления градиента. При to top right линия идет из нижнего левого в верхний правый угол, при 45deg - располагается строго под этим углом независимо от размеров фигуры.
Разница хорошо видна на прямоугольных фигурах:
Также можно задавать точки остановки для цветов градиента, значения задаются в единицах или в процентах и могут быть больше 100% и меньше 0%.
Примеры задания значений в % , в em и значения, выходящие за границы элемента:
Чем ближе находятся точки остановки соседних цветов, тем четче будет граница между ними. Таким образом можно легко делать полосатые фоны:
Так можно сделать, например, фон под боковую колонку, растянутый на всю высоту родительского элемента:
Полоски на фоне сайдбара - ещё один градиент, состоящий из чередования полной прозрачности и белого цвета с прозрачностью 30%. Градиенты с полупрозрачными цветами удобны тем, что их можно наложить поверх фона любого цвета.
Градиент в примере задан сложным длинным кодом, потому что полоски должны располагаться только над фоном для сайдбара. Если не пытаться сделать всё фоном для одного блока, можно было бы решить задачу с помощью псевдоэлемента.
При отсутствии ограничений код может быть гораздо короче:
Light { background: peachpuff linear-gradient(90deg, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, .4) 50%) center center / 2em; } .dark { background: steelblue linear-gradient(rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, .2) 50%) center center / 100% 1em; }
В первой строчке задаем фоновый цвет элемента, тип и направление (цвет и направление можно опустить), во второй - определяем цвета градиента и границу между ними, в третьей - задаем положение и размер получившегося изображения. Самая важная часть - размер. По умолчанию фон повторяется, поэтому получившийся паттерн заполнит собой фон элемента. Очень легко и понятно:)
Вся запись может быть сделана в одну строчку, но для читабельности удобнее писать в несколько, особенно для сложных градиентов.
Также важно знать, что ключевое слово transparent означает прозрачный черный, а не прозрачный белый, поэтому при его использовании в Firefox можно получить вот такую неприятность:
Чтобы этого избежать, используйте полностью прозрачные цвета нужного оттенка, например, белый: rgba(255, 255, 255, 0) или черный rgba(0, 0, 0, 0) . Про разные способы задавать цвета можно почитать .
Чтобы узнать rgb-нотацию конкретного цвета, можно воспользоваться CSS.coloratum , инструментом от Lea Verou .
Помимо обычного linear-gradient можно сделать repeating-linear-gradient - повторяющийся градиент
Примерный код:
Background: repeating-linear-gradient(green, green .5em, transparent .5em, transparent 1em);
К сожалению, повторяющиеся градиенты ведут себя как попало и подойдут только для узоров, которым не важна точность. Если нужна аккуратность, используйте linear-gradient в сочетании с background-size и background-repeat .
Градиенты имеют такое же ограничение, что и box-shadow: им нельзя задавать отдельно цвета или направление. Это приводит к дублированию кода и острой потребности воспользоваться препроцессорами в случае создания сложных градиентов.
Другое ограничение состоит в том, что градиенты не анимируются, что, впрочем, можно до какой-то степени обойти .
Для быстрого создания кроссбраузерных градиентов есть очень удобный инструмент: colorzilla.com/gradient-editor/ . Помимо кода для современных браузеров, он предложит код для старых IE и SVG для 9-го.
В сочетании с базовыми возможностями управления фоновыми картинками градиенты дают широчайшие возможности для создания фонов разной степени сложности совершенно без использования изображений. Градиентами можно делать сложные и интересные паттерны, но это уже совсем другая тема.
Когда мы говорим о градиентах в CSS, мы говорим о цветных градиентах .
В CSS существует два типа градиентов:
- линейные : цвета идут от одной точки к другой, по прямой линии;
- радиальные : цвета идут от центра круга к его краям, во всех направлениях.
Градиент считается фоновым изображением и должен использоваться с соответствующим свойством.
linear-gradient
Синтаксис для линейных градиентов является довольно сложным , но основная идея заключается в следующем:
- определить желаемые цвета ;
- где эти цвета должны появиться вдоль оси (в начале, середине, конце и т. д.);
- в каком направлении должен идти градиент.
Давайте начнём с простого градиента из двух цветов:
Div { background-image: linear-gradient(red, blue); }
По умолчанию:
- направление вертикальное , сверху вниз;
- первый цвет в начале (вверху);
- второй цвет в конце (внизу).
Изменение направления
Если направление сверху вниз вам не подходит, вы можете поменять его на один из вариантов:
- определить назначение градиента , с помощью таких ключевых слов, как to left top ;
- определить конкретный угол в градусах, вроде 45deg .
Это направление должно быть установлено перед цветом:
Div { background-image: linear-gradient(to bottom right, yellow, purple); width: 200px; }
Если вы хотите задать конкретный угол , то можете использовать значение в градусах :
- 0deg - снизу вверх;
- 20deg - немного по диагонали, идущей по часовой стрелке;
- 90deg - подобно 15 часам, слева направо;
- 180deg - это значение по умолчанию, сверху вниз.
Div { background-image: linear-gradient(20deg, green, blue); width: 150px; }
Добавление большего количества цветов
Вы можете вставить столько цветов, сколько захотите. Они будут равномерно распределены вдоль оси:
- два цвета : 0% и 100%
- три цвета : 0%, 50% и 100%
- четыре цвета : 0%, 33%, 67% и 100%
Div { background-image: linear-gradient(orange, grey, yellow); width: 150px; }
Определение конкретных точек цвета
Если вы не хотите, чтобы цвет распределялся равномерно, то можете установить определённые позиции цвета , используя либо проценты (%), либо пиксели (px):
Div { background-image: linear-gradient(orange, grey 10%, yellow 50%); width: 150px; }
В данных параметрах:
- у цвета orange не задана позиция цвета, так что значение по умолчанию равно 0%;
- цвет grey ближе к верху, на 10% вместо 50%;
- цвет yellow занимает половину градиента, от 50% и до конца 100%.
radial-gradient
В то время как линейные градиенты идут вдоль одиночной оси, радиальные градиенты распространяются во всех направлениях. Их синтаксис очень похож на линейные градиенты, поскольку у тех и других есть точки цвета . Но вместо указания направления вам необходимо задать:
- форму : круг или эллипс;
- начальную точку : которая будет центром круга или эллипса;
- конечную точку : где будет край круга или эллипса.
Div { background-image: radial-gradient(red, yellow); padding: 1rem; width: 300px; }
По умолчанию:
- градиент является эллипсом ;
- первый цвет начинается в центре ;
- последний цвет заканчивается в самом дальнем углу .
Начальная позиция
Начальная позиция работает как background-position . Вы можете установить её через ключевое слово at .
Div { background-image: radial-gradient(at top right, black, lightgrey); padding: 1rem; width: 300px; }
Конечная позиция
По умолчанию форма завершается в самом дальнем углу . Вы можете выбрать:
- closest-side
- closest-corner
- farthest-side
- farthest-corner
Div { background-image: radial-gradient(closest-corner at 20px 20px, green, blue); padding: 1rem; width: 300px; } div:hover { background-image: radial-gradient(farthest-side at 20px 20px, green, blue); }
Фиксированный размер
Вместо установки начальной и конечной позиций, вы можете просто задать конкретные размеры :
Div { background-image: radial-gradient(20px 10px at 75% 50%, darkviolet, pink); padding: 1rem; width: 300px; }
Градиенты в CSS являются мощным средством, учитывая бесконечное число вариантов.