数据可视化系列--svg入门基础(一)

1、SVG(Scalable Vector Graphics)可伸缩矢量图形

特点:

(1)使用xml格式来定义图形;

(2)用来定义web上的使用的矢量图;

(3)改变图像尺寸,图片质量不受损;

(4)所有元素属性可以使用动画;

(5)继承了W3C标准,在html中使用方式,html直接嵌入svg内容,或者直接引入svg文件。

/* svg标签,这里的rect为矩形,在后面的图形元素中会详细说明 */ <svg> <rect fill="red"></rect> </svg> /* 引入后缀名为.svg的文件 */ <img src="http://www.likecs.com/demo.svg" alt="测试svg图片">

注意:svg为inline水平元素。且需要绘制的所有图形都应被包含在<svg></svg>标签内。

 

2、SVG坐标系

特点:(1)y轴向下;(2)顺时针方向的角度是正值。

数据可视化系列--svg入门基础(一)

注意:元素的所有操作都是相对自身坐标系进行的

 

3、颜色RGB和HSL

RGB: 三个分量:红色、绿色、蓝色,每个分量的取值范围[0, 255],优点是显示器更容易解析。

HSL: 三个分量:颜色h、饱和度s%、亮度l%,每个分量的取值范围分别是[0, 359], [0, 100%], [0, 100%],,其中,h=0表示红色, h=0表示120绿色,h=0表示240 蓝色。

基于HSL的配色方案:

 

二、特殊元素

1、foreignObject

foreignObject元素通常被用来在svg代码中嵌入html节点。注意:该属性对IE不支持。<foreignObject>元素的作用是可以在其中使用具有其它XML命名空间的XML元素,换句话说借助<foreignObject>标签,我们可以直接在SVG内部嵌入XHTML元素。通常会与标签一起使用,在用户浏览器不支持时,告知用户。

举个例子:

<svg xmlns="http://www.w3.org/2000/svg"> <foreignObject> <body xmlns="http://www.w3.org/1999/xhtml"> <p>文字测试foreignObject的功能</p> </body> </foreignObject> </svg>

可以看到<foreignObject>标签里面有一个设置了xmlns="http://www.w3.org/1999/xhtml"命名空间的<body>标签,此时<body>标签及其子标签都会按照XHTML标准渲染,实现了SVG和XHTML的混合使用。

这种混合特性有什么作用呢?作用很多,其中之一就是轻松实现SVG内的文本自动换行

1.1文本自动换行

SVG要实现文本换行,往往需要手动阻断

<svg xmlns="http://www.w3.org/2000/svg"> <text font-size="12"> <tspan x="0" y="10">一段需要word wrap</tspan> <tspan x="0" y="26">的文字。</tspan> </text> </svg>

需要2个<tspan>元素,这一点都不工程。

但是如果使用<foreignObject>元素,则自动换行就是小菜:

<svg xmlns="http://www.w3.org/2000/svg"> <foreignObject> <body xmlns="http://www.w3.org/1999/xhtml"> <p>一段需要word wrap的文字。</p> </body> </foreignObject> </svg>

数据可视化系列--svg入门基础(一)

1.2将页面上的DOM元素轻松变成图片

SVG <foreignObject>元素还有其他更高级的应用,就是可以将页面上的DOM元素轻松变成图片。

原理:

1、获取对应DOM元素的outerHTML代码;

2、放在<foreignObject>元素中;

3、图片方式显示我们的SVG图形;

4、上一步的图片本质还是SVG,我们可以借助canvas drawImage()方法将图片放在画布上,然后使用canvas.toDataURL()方法转换成png或jpg图片。

 

三、作用于svg标签的属性

1、viewport

表示svg的可见区域的大小:width和height,控制svg的宽度和高度

2、viewBox

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfwzx.html