Проблема в том, что, когда <svg>
встроен в HTML, он выполняет двойную функцию как элемент SVG , так и элемент HTML .
Для обеспечения согласованности,некоторые функции HTML работают с внешними элементами <svg>
, но они не работают с внутренними / вложенными элементами SVG.Помните, что SVG отличается от стандарта HTML.У него другое назначение, и для всех функций HTML не имеет смысла работать с элементами SVG.Сказав, что там, где это имеет смысл, некоторые функции HTML поддерживаются или будут поддерживаться в ближайшее время.
Одним ранним добавлением было заставить background
/ background-color
работать с крайними <svg>
элементами.AFAIK все браузеры поддерживают это сейчас.
То же самое относится и к transform
.Текущая спецификация SVG (1.1) не допускает transform
для элемента <svg>
, но для согласованности с другими элементами HTML браузеры поддерживают ее для самых внешних элементов <svg>
.В следующем стандарте SVG 2 transform
будет разрешено и для внутренних элементов <svg>
.На самом деле Firefox уже реализовал это.Я полагаю, что в настоящее время это единственный браузер, который делает это.
Если вы хотите использовать подход, который работает везде, следующее обычно делает свое дело.
<svg ...>
<rect width="100%" height="100%" fill="#00f"/>
...
</svg>