DOM操作
svg看起来是一个整体,但是如果svg代码直接写在HTML页面之中,它就成为页面DOM的一部分,可以直接用DOM操作。
<svg id="mysvg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<circle id="mycircle" cx="400" cy="300" r="50" />
<svg>
上面代码插入网页之后,也可以用 CSS 定制样式:
circle {
stroke-width: 5;
stroke: #f00;
fill: #ff0;
}
circle:hover {
stroke: #090;
fill: #fff;
}
也可以用JS来操作DOM:
var mycircle = document.getElementById('mycircle');
mycircle.addEventListener('click', function(e) {
console.log('circle clicked - enlarging');
mycircle.setAttribute('r', 60);
}, false);
如果点击图形,就改写circle元素的r属性。
获取SVG DOM
使用<object>、<iframe>、<embed>标签插入 SVG 文件,可以获取 SVG DOM。
var svgObject = document.getElementById('object').contentDocument;
var svgIframe = document.getElementById('iframe').contentDocument;
var svgEmbed = document.getElementById('embed').getSVGDocument();
注意,如果使用标签插入 SVG 文件,就无法获取 SVG DOM。
读取 SVG 源码
由于 SVG 文件就是一段 XML 文本,因此可以通过读取 XML 代码的方式,读取 SVG 源码。
<div id="svg-container">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve" width="500" height="440"
>
</svg>
</div>
使用XMLSerializer实例的serializeToString()方法,获取 SVG 元素的代码。
var svgString = new XMLSerializer()
.serializeToString(document.querySelector('svg'));
版权声明:本文为baidu_38242832原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。