Svg操作
SVG文件的JavaScript操作
获取SVG DOM
如果使用img标签插入SVG文件,则无法获取SVG DOM。使用object、iframe、embed标签,可以获取SVG DOM。
var svgObject = document.getElementById("object").contentDocument;
var svgIframe = document.getElementById("iframe").contentDocument;
var svgEmbed = document.getElementById("embed").getSVGDocument();
由于svg文件就是一般的XML文件,因此可以用DOM方法,选取页面元素。
// 改变填充色
document.getElementById("theCircle").style.fill = "red"; // 改变元素属性
document.getElementById("theCircle").setAttribute("class", "changedColors"); // 绑定事件回调函数
document.getElementById("theCircle").addEventListener("click", function() {
console.log("clicked")
});
读取svg源码
由于svg文件就是一个XML代码的文本文件,因此可以通过读取XML代码的方式,读取svg源码。
假定网页中有一个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 code -->
</svg>
</div>
使用XMLSerializer实例的serializeToString方法,获取svg元素的代码。
var svgString = new XMLSerializer().serializeToString(document.querySelector('svg'));
将svg图像转为canvas图像
首先,需要新建一个img对象,将svg图像指定到该img对象的src属性。
var img = new Image();
var svg = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"}); var DOMURL = self.URL || self.webkitURL || self;
var url = DOMURL.createObjectURL(svg); img.src = url;
然后,当图像加载完成后,再将它绘制到canvas元素。
img.onload = function() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
};
Svg操作的更多相关文章
- 强大的svg操作库——Raphael
先常规先引入Raphael库: <script src="raphael.js" type="text/javascript"></scrip ...
- SVG操作插件:SVG.JS 个人提取部分实用中文文档
先贴出github地址:https://github.com/svgdotjs/svg.js(也就是原文档的说明和文件的下载地址) 创建SVG文档 var draw = SVG('drawing'). ...
- selenium玩转svg操作
今天写脚本发现页面有svg结构,里面的元素无法定位,查找很多资料,然后就记录下来 初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息. SV ...
- svg操纵方案 基于 D3 还是 angular?
之前还是想简单了, 现在重新写这篇.把逻辑拆分粒度的辨析,放到外面去. 问题提出:svg控制方案 基于 D3 还是 angular 根据这个,html 4种展现样式:普通的html,svg,2D ca ...
- 20个简化开发任务的 JavaScript库
所谓JavaScript库就是预先写好的可以简化基于JavaScript的应用程序开发的,尤其是Ajax和其它以web为中心的技术的 JavaScript代码集.JavaScript主要用于写内嵌于H ...
- D3--数据可视化实战总结
d3理解 标签(空格分隔): 未分类 1.绑定数据 [x] 定义:通过循环的方式将数据绑定在dom元素上,每个数据对应一个元素,所以这个数据的值就能来设定dom元素的width,height,x,y坐 ...
- 上手d3js
0---什么是d3js: d3js是一个开源的,基于对svg操作的数据可视化框架,简单的说他提供了数据提供了一系列的数据可视化工具,可以用他很方便的创造出关于svg的动画:svg动画具有可伸缩,不失真 ...
- 在 Angular 2 Component 中使用第三方 JS 库
本文所有内容以 Angular 2 Quick Start 项目为基础,使用 TypeScript 语言. 如上图,最近遇到一个需求,需要在一个刚启动的 Angular 2 项目中使用 snap.sv ...
- vue系列---snabbdom.js使用及源码分析(九)
一:什么是snabbdom? 在学习Vue或React中,我们了解最多的就是虚拟DOM,虚拟DOM可以看作是一颗模拟了DOM的Javascript树,主要是通过vnode实现一个无状态的组件,当组件状 ...
随机推荐
- 安装 php
1.yum安装php yum install php 2.配置 apache 支持 php a.找到httpd.conf find / -name httpd.conf b.编辑 httpd.con ...
- bootstrap导航条
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>我的 ...
- ftp文件操作
PHP FTP操作类( 上传.拷贝.移动.删除文件/创建目录 ) 2016-06-01 PHP编程 /** * 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 ) */ class class_ ...
- hibernate的get、load的方法的区别,IllegalArgument异常
关于hibernate中的load,get,以及延迟加载问题 今天在使用hibernate时,发现一异常: could not initialize proxy - no Session 查询资料之后 ...
- 扩展PHP内置的异常处理类
在try代码块中,需要使用throw语句抛出一个异常对象,才能跳到转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象.虽然在PHP中提供的内置异常处理类Exception,已 ...
- sizeof(int *) 和 sizeof(int)型的大小问题
小问题,暂时记录注意一下 printf("sizeof(int): %d\n", (int)sizeof(int)); printf("sizeof(int ...
- 百度地图api窗口信息自定义
百度地图加载完后,完全可以用dom方法操作,比较常用的就是点击mark的弹窗,利用jQuery可以很快的创建弹窗,需要注意的就是地图都是异步加载,所以绑定时间要用 jQuery 事件 - delega ...
- HTML 基础元素
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Period
uvalive3026:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- ARP劫持攻击
今天下午,莫名其妙的产生. 部分客户的网站产生乱码,但本机访问或是好好的. 外网访问,乱码的原文件是一个<IFRAME>网页. 听说,有时ARP攻击是导致网络中断或时断时续. 安全狗和36 ...