Одним из его преимуществ является возможность использования CSS для определения внешнего вида.
Свойства для SVG элементов
Определение стилей для SVG элементов происходит также, как и для обычных элементов HTML. Некоторые свойства являются общими, но есть и специфические свойства для объектов SVG/
Например: для обычного элемента HTML можно задавать цвет фона свойствами CSS background-color илиbackground. В SVG ситуация несколько отличается: фоновый цвет определяется свойством fill (заполнение). Также обводка элемента определяется свойством stroke, а не border, как в обычном HTML. Полный список свойств приводится здесь.
Если вы знакомы с инструментами редактирования векторной графики (например, редактор Adobe Illustrator), то подобный подход к определению свойств покажется вам логичным.
Реализация определения стилей для SVG элементов
Мы можем использовать следующие методы для определения стилей SVG элементов.
Атрибуты представления
Все свойства SVG могут быть применены непосредственно к представлению элемента в коде HTML. Следующий пример показывает как использовать свойства fill и stroke непосредственно для элемента rect:
<svg>
<rect width="200" height="200" fill="slategrey" stroke="black" stroke-width="3"/>
</svg>
В результате получится примерно такой прямоугольник:
Встраиваемые стили
Мы также можем добавлять стили с помощью атрибута style. В следующем примере также добавляются свойства fillи stroke к элементу rect, но в этот раз с помощью атрибута style, и также производится вращение элемента с помощью свойства CSS3 transform:
<svg>
<rect x="203" width="200" height="200" style="fill:slategrey; stroke:black; stroke-width:3; -webkit-transform: rotate(45deg);"/>
</svg>
Внутренняя таблица стилей
Объединение стилей для SVG в элементе style также возможно и не отличается от обычного HTML. Пример демонстрирует как добавить во внутреннюю таблицу стилей правила для SVG элементов в документе .html:
<style type="text/css" media="screen">
#internal rect {
fill: slategrey;
stroke: black;
stroke-width: 3;
-webkit-transition: all 350ms;
}
#internal rect:hover {
fill: green;
}
</style>
Однако, SVG является основанным на XML языком, поэтому при добавлении встроенных стилей в документ .svgнужно использовать декларацию cdata:
<style type="text/css" media="screen">
<![CDATA[
#internal rect {
fill: slategrey;
stroke: black;
stroke-width: 3;
-webkit-transition: all 350ms;
}
#internal rect:hover {
fill: green;
}
]]>
</style>
Директива cdata в данном случае обязательна, так как CSS используется символ >, который может конфликтовать с обработчиком XML.
Внешняя таблица стилей
Внешняя таблица стилей действует также для элементов SVG в документе .html.
<link rel="stylesheet" type="text/css" href="style.css">
В документе .svg необходимо ссылаться на внешнюю таблицу как на xml-stylesheet:
<?xml-stylesheet type="text/css" href="style.css"?>
Группировка элементов
Элементы SVG могут быть сгруппированы с помощью элемента <g>. Сгруппированные элементы позволяют использовать общие стили для всех элементов в группе:
<g style="fill:slategrey; stroke:black; stroke-width:3; fill-opacity: 0.5;">
<rect x="203" width="200" height="200"/>
<circle cx="120" cy="106" r="100"/>
</g>