SVG: заливка и обводка
- Содержание:
- fill
- fill-rule
- fill-opacity
- stroke
- stroke-width
- stroke-linecap
- stroke-linejoin
- stroke-dasharray
- stroke-dashoffset
- stroke-opacity
В SVG заливка и обводка имеют много разных интересных опций, которые предоставляют возможности гораздо шире того, что есть в CSS.
Например, можно нарисовать SVG-паттерн и использовать его не только в заливке, но и в обводке. Заливке и обводке можно указывать разную прозрачность, также можно управлять пунктирной обводкой, на чем можно построить интересные анимированные эффекты.
В качестве заливки и обводки можно задавать none
, цвета, ключевые слова (currentColor
и transparent
), а также градиенты и паттерны.
fill
Заливка элемента.
Возможные значения: none
, ключевые слова, цвета, паттерны и градиенты.
Значение по умолчанию — black
.
fill-rule
Свойство определяет как будут заливаться сложные фигуры, имеющие пересечения внутри себя. Для простых фигур ни на что не влияет.
Возможные значения: nonzero
, evenodd
fill-rule="nonzero"
fill-rule="evenodd"
fill-rule="nonzero"
интересно ведет себя для фигур из двух путей. Например, если внешний круг нарисован по часовой стрелке, а внутренний в обратном направлении, центральный круг останется без заливки (слева). Если же оба круга нарисованы в одном направлении — фигура зальется полностью (справа):
fill-opacity
Управление прозрачностью заливки. Можно задавать значения от 0.0 до 1.0 или в процентах. Правда, Firefox не любит значения в процентах для градиентов (пруфлинк, смотреть в FF).
stroke
Цвет обводки. Значения по умолчанию нет.
stroke-width
Толщина обводки, можно задавать в единицах длины или в процентах. Значение по умолчанию: 1.
stroke-linecap
Свойство определяет как будут выглядеть концы линий.
Возможные значения: butt
, round
, square
.
Значение по умолчанию: butt
.
stroke-linejoin
Определяет как будут выглядеть соединения линий на углах.
Возможные значения: miter
, round
, bevel
.
Значение по умолчанию: miter
.
stroke-dasharray
Управляет видом пунктирной обводки. Можно задавать в единицах длины или в процентах.
Если задано одно значение, второе значение считается равным первому. Например, stroke-dasharray="1"
нарисует линию из отрезков длиной одну единицу разделенных пробелами такой же ширины.
Примеры разных пунктирных линий:
Используя обводку и простые фигуры можно получить удивительные вещи:
See the Pen SVG-patterns by yoksel (@yoksel) on CodePen.
Также stroke-dasharray
интересно сочетается с анимацией:
See the Pen Animated stroke by yoksel (@yoksel) on CodePen.
stroke-dashoffset
Свойство позволяет задать смещение пунктирной обводки относительно первоначального положения. Значение задается в единицах длины или в процентах, значения могут быть отрицательными. Значение по умолчанию: 0.
В этом примере оранжевые и желтые линии смещены относительно красной с помощью разных значений stroke-dashoffset
:
Сочетая stroke-dashoffset
и stroke-dasharray
можно получить интересные эффекты.
Для полноценного просмотра воспользуйтесь браузерами на Webkit. Ссылка на полную версию.
See the Pen dasharray + dashoffset = magic by yoksel (@yoksel) on CodePen.
Для перезапуска нажмите Rerun.
Несколько вдохновляющих ссылок про анимацию на stroke-dashoffset
:
stroke-opacity
Прозрачность обводки. Задаются значения от 0.0 до 1.0.
Анимация обводки позволяет получить совершенно удивительные вещи. Правда, я в своих примерах использовала CSS (и это демо не играет в Firefox) и SVG-анимацию, которая работает таки везде, но задается странно, длинно и неудобно. Думаю, что оптимальнее всего для анимации SVG использовать JavaScript-библиотеки.
- Ссылки по теме:
- w3.org/TR/SVG
- Метки:
- SVG