我需要获取外部css文件的内容才能将其添加到svg。
我正在寻找的是css的toString方法。这可能吗?我还没有找到解决方案。
这是解决方案xml我正在寻找svg:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="10cm" height="5cm" viewBox="0 0 1000 500">
<defs>
<style type="text/css"><![CDATA[
rect {
fill: red;
stroke: blue;
stroke-width: 3
}
]]></style>
</defs>
<rect x="200" y="100" width="600" height="300"/>
</svg>
我尝试使用外部链接,但它没有渲染样式:
<?xml version="1.0" standalone="no"?>
<?xml-stylesheet href="mystyle.css" type="text/css"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
width="10cm" height="5cm" viewBox="0 0 1000 500">
<rect x="200" y="100" width="600" height="300"/>
</svg>
编辑:我原本应该添加这个 我在浏览器中有svg渲染,因为它可以访问svg。
我需要做的是将svg发送到服务器进行进一步处理(转换格式,保存到数据库......)。问题是由于css不包含在svg xml中,因此样式丢失了。我需要将css添加到svg本身,就像上面第一段代码一样,这样我就可以保留样式。
答案 0 :(得分:7)
如果您能够使用JavaScript,则可以按如下方式获取样式表的内容:
[].slice.call(document.styleSheets[1].cssRules).forEach(function(rule){
console.log('rule:', rule.cssText)
})
document.styleSheets[1]
是你的样式表。