SVG

一、概述

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

上面的代码定义了三个圆。 标签的cx,cy,r属性分别为横坐标、纵坐标和半径。单位为像素,坐标都是相对于<svg>画布的左上角原点。
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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值