Câu trả lời ngắn gọn: không, vì kiểu không áp dụng trên các ranh giới tài liệu.
Tuy nhiên, vì bạn có một <object>
thẻ nên bạn có thể chèn biểu định kiểu vào tài liệu svg bằng cách sử dụng script.
Một cái gì đó như thế này và lưu ý rằng mã này giả định rằng <object>
đã được tải đầy đủ:
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);
Cũng có thể chèn một <link>
phần tử để tham chiếu một biểu định kiểu bên ngoài:
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);
Tuy nhiên, tùy chọn khác là sử dụng phương pháp đầu tiên, để chèn một yếu tố phong cách, và sau đó thêm một quy tắc @import, ví dụ styleElement.textContent = "@import url(my-style.css)"
.
Tất nhiên, bạn cũng có thể liên kết trực tiếp đến biểu định kiểu từ tệp svg mà không cần thực hiện bất kỳ tập lệnh nào. Một trong hai cách sau sẽ hoạt động:
<?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>
hoặc là:
<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>
Cập nhật 2015: bạn có thể sử dụng plugin jquery-svg để áp dụng tập lệnh js và kiểu css cho SVG được nhúng.