一、概述
svg是一种基于XML语法得图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的, SVG则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
SVG文件可以直接插入网页,成为DOM的一部分,然后用JavaScript和CSS进行操作。
<!DOCTYPE html>
<html>
<head></<head>
<body>
<svg id="mysvg" xmlns="http://www.w3.org/2000/svg"...</svg>
</body>
</html>123456
上面是SVG代码直接插入网页的例子
SVG代码也可以写在一个独立文件中,然后用img/object/iframe/embed
等标签插入网页。
<img src="circle.svg">
<object id="object" data="circle.svg" type="image/svg+xml"></object>
<embed id="embed" src="icon.svg" type="image/svg+xml">
<iframe id="iframe" src="icon.svg"></iframe>1234
CSS也可以使用SVG文件
.logo{
background:url(icon.svg);
}
SVG文件还可以转为BASE64编码,然后作为DateURL写入网页
二、语法
<svg>标签
SVG代码都放在顶层标签<svg>之中。下面是一个例子。
<svg width="100%" height="100%>
<circle id="mycircle" cx="50" cy="50" r="50"/>
</svg>123
\<svg>的width属性和height属性,制定了SVG图像在html元素中所占据的宽度和高度。除了相对单位,也可以采用绝对单位(单位:像素)。如果不指定这两个属性,SVG图像默认大小是300像素(宽)*150像素(高)。
如果只想展示SVG图像的一部分,就要指定viewBox属性。
<svg width="100" height="100" viewBox="50 50 50 50">
<circle id="mycircle" cx="50" cy="50" r="50"/>
</svg>123
viewBox属性的值有四个数字,分别是左上角的横坐标和纵坐标,视口的高度和宽度。上面代码中,SVG图像是100像素宽*100像素高,viewBox属性指定视口从(50,50)这个点开始。所以,实际看到的是右下角的四分之一圆。
注意,视口必须适配所在的空间。上面代码中,视口的大小是5050,由于SVG图像的大小是100*100,所以视口会放大去适配SVG图像的大小,即放大了四倍。
如果不指定width和height属性,只指定viewBox属性,则相当于只给到定SVG图像的长宽比。这时,SVG图像的默认大小将等于所在的html元素的大小。
<circle>标签
<circle>标签代表圆形。
<svg width="300" height="180">
<circle cx="30" cy="50" r="25"/>
<circle cx="90" cy="50" r="25" class="red"/>
<circle cx="150" cy="50" r="25" class="fancy"/>
</svg>12345
上面的代码定义了三个圆。
class属性用来指定对应的CSS类。
.red{
fill:red;
}
.fancy{
fill:none;
stroke:black;
stroke-width:3pt;
}
SVG的CSS属性与网页元素有所不同。
- fill:填充色
- stroke:描边色
- stroke-width:边宽宽度
<line>标签
<line>标签用来绘制直线。
<svg width="300" height="180">
<line x1="0" y1="0" x2="200" y2="0" style="stroke:rgb(0,0,0); stroke-width:5"/>
</svg>
…