Коротка відповідь: ні, оскільки стилі не застосовуються через межі документа.
Однак, оскільки у вас є <object>
тег, ви можете вставити таблицю стилів у SVG-документ за допомогою скрипту.
Щось подібне, і зауважте, що цей код передбачає, що <object>
файл завантажений повністю:
var svgDoc = yourObjectElement.contentDocument;
var styleElement = svgDoc.createElementNS("http://www.w3.org/2000/svg", "style");
styleElement.textContent = "svg { fill: #fff }"; // add whatever you need here
svgDoc.getElementById("where-to-insert").appendChild(styleElement);
Також можна вставити <link>
елемент для посилання на зовнішній таблицю стилів:
var svgDoc = yourObjectElement.contentDocument;
var linkElm = svgDoc.createElementNS("http://www.w3.org/1999/xhtml", "link");
linkElm.setAttribute("href", "my-style.css");
linkElm.setAttribute("type", "text/css");
linkElm.setAttribute("rel", "stylesheet");
svgDoc.getElementById("where-to-insert").appendChild(linkElm);
Ще один варіант - використовувати перший метод, вставити елемент стилю, а потім додати правило @import, наприклад styleElement.textContent = "@import url(my-style.css)"
.
Звичайно, ви можете безпосередньо посилатися на таблицю стилів із файлу SVG, не роблячи сценаріїв. Будь-яке з наступного має працювати:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="my-style.css" type="text/css"?>
<svg xmlns="http://www.w3.org/2000/svg">
... rest of document here ...
</svg>
або:
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<link href="my-style.css" type="text/css" rel="stylesheet"
xmlns="http://www.w3.org/1999/xhtml"/>
</defs>
... rest of document here ...
</svg>
Оновлення 2015: ви можете використовувати плагін jquery-svg для застосування js-скриптів та стилів css до вбудованого SVG.