Наследование формы в SVG - PullRequest
0 голосов
/ 16 ноября 2011

Есть ли в SVG концепция наследования форм?

Проблема: Я создаю карту с различными типами значков, которые представляют разные объекты на карте. Есть ли способ связать эти типы значков, чтобы я мог изменить «родителя» (скажем, значок в легенде), и все «дети» наследуют эти свойства?

Делаем это в Inkscape, но я надеюсь, что это свойство SVG и, следовательно, правильный вопрос Stackoverflow.

1 Ответ

4 голосов
/ 16 ноября 2011

Я не уверен, что вы подразумеваете под "свойствами".

Вы можете использовать CSS class="foo", чтобы применить визуальные стили к вашим элементам, например, fill:red; stroke-width:2px.Изменение правила CSS повлияет на визуальный стиль всех фигур с этим классом.

Однако, возможно, вам нужен элемент <use>, который позволяет иметь много легких ссылок наединственная форма (или произвольный набор геометрии), размещенная по всему документу.Изменения исходных форм / контуров / визуальных стилей влияют на все экземпляры.

Элемент <use> может ссылаться на конкретную форму, группу фигур <g> или даже на весь документ <svg>.

Чтобы создать специальный исходный рисунок, который не отображается сам по себе, вы можете либо использовать <symbol> (который имеет viewBox), либо поместить любой контент в <defs> раздел (например, <g>).

Вот пример, показывающий использование символов и <use> для размещения идентичных маркеров на карте:
http://www.carto.net/svg/samples/symbol.shtml

...