Svg fill stroke css

SVG: заливка и обводка

В SVG заливка и обводка имеют много разных интересных опций, которые предоставляют возможности гораздо шире того, что есть в CSS.

Например, можно нарисовать SVG-паттерн и использовать его не только в заливке, но и в обводке. Заливке и обводке можно указывать разную прозрачность, также можно управлять пунктирной обводкой, на чем можно построить интересные анимированные эффекты.

В качестве заливки и обводки можно задавать none , цвета, ключевые слова ( currentColor и transparent ), а также градиенты и паттерны.

fill

Возможные значения: none , ключевые слова, цвета, паттерны и градиенты. Значение по умолчанию — black .

svg width="200" height="200"> defs> symbol id="s-rect"> rect width="70" height="70"/> symbol> linearGradient id="g-green" x1="0%" y1="0%" x2="0%" y2="90%" > stop offset="0%" stop-color="yellowgreen" /> stop offset="90%" stop-color="green" /> linearGradient> defs> use xlink:href="#s-rect" x="20" y="20" fill="hsla(348, 83%, 47%,.3)"/> use xlink:href="#s-rect" x="110" y="20" fill="rgb(255, 215, 0)"/> use xlink:href="#s-rect" x="20" y="110" fill="url(#g-green)"/> use xlink:href="#s-rect" x="110" y="110" fill="skyblue"/> svg>

fill-rule

Свойство определяет как будут заливаться сложные фигуры, имеющие пересечения внутри себя. Для простых фигур ни на что не влияет. Возможные значения: nonzero , evenodd

fill-rule=»nonzero» интересно ведет себя для фигур из двух путей. Например, если внешний круг нарисован по часовой стрелке, а внутренний в обратном направлении, центральный круг останется без заливки (слева). Если же оба круга нарисованы в одном направлении — фигура зальется полностью (справа):

fill-opacity

Управление прозрачностью заливки. Можно задавать значения от 0.0 до 1.0 или в процентах. Правда, Firefox не любит значения в процентах для градиентов (пруфлинк, смотреть в FF).

 use xlink:href="#s-rect" x="20" y="20" fill="url(#g-red)" fill-opacity=".5"/> use xlink:href="#s-rect" x="50" y="50" fill="hsl(50, 100%, 50%)" fill-opacity=".5"/> use xlink:href="#s-rect" x="80" y="80" fill="url(#g-green)" fill-opacity=".5"/> 

stroke

svg width="200" height="200"> rect width="160" height="160" x="20" y="20" fill="none" stroke="yellowgreen"/> svg>

stroke-width

svg width="200" height="200"> rect width="100" height="100" x="50" y="50" fill="none" stroke="gold" stroke-width="10"/> rect width="160" height="160" x="20" y="20" fill="none" stroke="yellowgreen" stroke-width="10%"/> svg>

stroke-linecap

Свойство определяет как будут выглядеть концы линий. Возможные значения: butt , round , square . Значение по умолчанию: butt .

 use xlink:href="#s-path" stroke="orangered" y="20" stroke-linecap="butt"/> use xlink:href="#s-path" stroke="olivedrab" y="85" stroke-linecap="round"/> use xlink:href="#s-path" stroke="steelblue" y="150" stroke-linecap="square"/> 

stroke-linejoin

Определяет как будут выглядеть соединения линий на углах. Возможные значения: miter , round , bevel . Значение по умолчанию: miter .

 use xlink:href="#s-corner" stroke="orangered" y="0" stroke-linejoin="miter"/> use xlink:href="#s-corner" stroke="olivedrab" y="80" stroke-linejoin="round"/> use xlink:href="#s-corner" stroke="steelblue" y="160" stroke-linejoin="bevel"/> 

stroke-dasharray

Управляет видом пунктирной обводки. Можно задавать в единицах длины или в процентах. Если задано одно значение, второе значение считается равным первому. Например, stroke-dasharray=»1″ нарисует линию из отрезков длиной одну единицу разделенных пробелами такой же ширины. Примеры разных пунктирных линий:

svg width="300" height="160"> path d="M 20 20 h 260" stroke="purple" stroke-width="1" stroke-dasharray="1" /> path d="M 20 40 h 260" stroke="mediumspringgreen" stroke-width="15" stroke-dasharray="1 3" /> path d="M 20 60 h 260" stroke="orangered" stroke-width="1" stroke-dasharray="5%" /> path d="M 20 80 h 260" stroke="green" stroke-width="1" stroke-dasharray="1 5" /> path d="M 20 100 h 260" stroke="steelblue" stroke-width="1" stroke-dasharray="2 7 6" /> path d="M 20 120 h 260" stroke="orange" stroke-width="5" stroke-dasharray="5" /> path d="M 20 140 h 260" stroke="mediumseagreen" stroke-width="1" stroke-dasharray="12% 5%" /> svg>

Используя обводку и простые фигуры можно получить удивительные вещи:
Также stroke-dasharray интересно сочетается с анимацией:

stroke-dashoffset

Свойство позволяет задать смещение пунктирной обводки относительно первоначального положения. Значение задается в единицах длины или в процентах, значения могут быть отрицательными. Значение по умолчанию: 0. В этом примере оранжевые и желтые линии смещены относительно красной с помощью разных значений stroke-dashoffset :

svg width="270" height="270"> g class="g-circles" fill="none" stroke-width="15" stroke-dasharray="25% 110%" transform="rotate(72 135 135)"> circle r="115" cx="135" cy="135" stroke="crimson"/> circle r="115" cx="135" cy="135" stroke="orangered" stroke-dashoffset="25%"/> circle r="115" cx="135" cy="135" stroke="gold" stroke-dashoffset="50%"/> g> svg>

stroke-opacity

Прозрачность обводки. Задаются значения от 0.0 до 1.0.

svg width="200" height="200"> g class="g-circles" fill="none" stroke-width="15"> circle r="40" cx="60" cy="60" stroke="crimson" stroke-opacity=".7"/> circle r="55" cx="100" cy="100" stroke="orangered" stroke-opacity=".5" /> circle r="40" cx="140" cy="140" stroke="gold" stroke-opacity=".25"/> g> svg>

Анимация обводки позволяет получить совершенно удивительные вещи. Правда, я в своих примерах использовала CSS (и это демо не играет в Firefox) и SVG-анимацию, которая работает таки везде, но задается странно, длинно и неудобно. Думаю, что оптимальнее всего для анимации SVG использовать JavaScript-библиотеки.

Сайдбар

Статьи

  • Математические функции в CSS
  • Адаптивное видео с помощью встроенных математических функций CSS
  • Недоступность в картинках
  • Единицы размеров в CSS
  • Генератор цветовых тем
  • Jekyll → Gatsby
  • Вариативные шрифты
  • Размеры в SVG
  • Адаптивный Pixel Perfect
  • Логотип не отвечает или временно недоступен
  • SVG-паттерны
  • Мыльные пузыри на SVG
  • SVG-градиенты
  • Весёлая консолька
  • SVG-маски
  • Умная прокрутка со Scroll Snap Points
  • CSS-анимации для ротации изображений
  • Анимированные SVG-маски
  • Странности обводки в SVG
  • SVG-прелоадеры
  • Анимируем градиенты ещё раз
  • Background-blend-mode
  • Возможности оформления SVG
  • CSS и SVG маски
  • Nth-child и nth-of-type
  • SVG-иконки
  • SVG: заливка и обводка
  • SVG-path
  • SVG: группировка и переиспользование элементов
  • SVG-фигуры и трансформации
  • SVG
  • СSS-градиенты и 3D
  • Рисовалка анимированных теней
  • Свежие CSS-паттерны
  • CSS-паттерны
  • Радиальные градиенты
  • Линейные градиенты
  • Крестики-нолики на CSS
  • Border-image
  • Электронные часы на CSS и JS.
  • Сколько весят селекторы?
  • Символы юникода
  • Свойство content
  • Анимируем CSS-градиенты
  • Текстовые эффекты
  • Древовидный список на CSS
  • Css-селекторы, часть 2
  • Css-селекторы
  • Контекст наложения
  • Два способа «прошить» элемент по краю
  • Box-sizing
  • Цвета в CSS
  • Фон под строчками: добавляем поля
  • Box-shadow
  • Css-фигуры: лепесток
  • Transform
  • Css Animation
  • 3D-куб
  • Border-radius
  • First letter
  • Эти глаза напротив
  • CSS-фигуры
  • Стрелки с помощью свойства border
  • Flexbox

Страницы

Проекты

Источник

Стилизация SVG-графики

Продолжаем изучать SVG-графику, на этот раз коснемся стилизации.
Первая часть: Знакомство с SVG-графикой.

Изменение внешнего вида SVG-элементов аналогично HTML, с некоторыми особенностями. Например фон назначается свойством fill, а не background-color, граница — stroke вместо border. Если вы работали с Adobe Illustrator, подобная терминология будет знакома.

Согласно официальной спецификации SVG свойства могут быть добавлены непосредственно в теги. Например fill и stroke для элемента rect:

Также свойства можно добавлять как стиль. В примере к fill и stroke прибавилось CSS3 свойство transform:

Так как SVG основан на XML-разметке, то стиль в .svg-документе необходимо заключать в CDATA, иначе конструкция будет конфликтовать с XML-парсерами. В примере добавлен hover-эффект:

В .svg-документ внешние стили подключаются немного по другому:

SVG-элементы можно группировать с помощью тега g, тогда можно применять общие стили:

Вот и все основные моменты стилизации SVG. Бонусом немного полезного чтива:

Источник

Читайте также:  Advanced custom fields php include
Оцените статью