SVG: используем CSS для определения внешнего вида

Одним из его преимуществ является возможность использования 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>
Теги:
SVG
Добавлено: 14 Апреля 2018 06:48:06 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...