svg是什么以及第一个svg图形以及如何在html中引用它

svg:scalable vector graphics,即可伸缩的矢量图形,不管你对它放大多少,图形的质量都是不会变的,这不同于我们常见的位图。比如百度地图,你可以在手机上把它放大、放大、再放大,它不会因为你的放大而使质量有所受损,你也不会因为放大了它而看不清晰,这就是矢量图形。svg跟dom标准类似,都是属于万维网联盟的标准。

        令任难以理解的是,svg是使用xml来定义的.......,它就是一个文本文件,里面的内容是xml格式的,这个xml被浏览器解析就显示成了svg矢量图片。基本上所有的浏览器都是支持svg的。

举个例子,新建一个demo.svg的文件,把如下内容粘贴进去:

<?xml version="1.0" standalone="no"?>
	<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
	"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
	<svg width="100%" height="100%" version="1.1"
	xmlns="http://www.w3.org/2000/svg">
        	<circle cx="100" cy="50" r="40" stroke="black"
        	stroke-width="2" fill="pink"/>
	</svg>

使用浏览器打开这个demo.svg,结果如下:

image.png

说明一下:

        描述svg图形的xml文件必须要以.svg结尾。

        第一行包是XML 声明。standalone="no"表示这个svg不是"独立的”,因为它含有对外部文件的引用,引用的是外部的 DTD 文件。这个 DTD文件包含了所有允许的 SVG 元素。

        SVG 代码要以 <svg> 元素开始,并以</svg>结束 。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

        SVG 的 <circle> 用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果不设置这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。除了circle,svg还有其他标签,我之后会写到,比如rect用来定义一个矩形。

        stroke 和 stroke-width 属性控制如何显示形状的轮廓。stroke-width="2"表示把圆的轮廓设置为 2px 宽,黑边框。

        fill 属性设置形状内的颜色,这里设置为pink粉色。

svg文档在html中引入的四种方式

 上节课我使用svg的xml语法编写了一个svg文档,在浏览器中打开的时候显示的样子是一个粉色的圆圈。但是,一个单独的svg文档存在的意义并不是太大,我们定义svg的目的还是在于在网页上显示它,那么如果我想使用svg,我就需要直接把我的demo.svg文档里的xml内容拷贝到一个html里面吗?就像下面这样demo.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body >
	<?xml version="1.0" standalone="no"?>
	<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
	"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
	<svg width="100%" height="100%" version="1.1"
	xmlns="http://www.w3.org/2000/svg">
        	<circle cx="100" cy="50" r="40" stroke="black"
        	stroke-width="2" fill="pink"/>
	</svg>
</body>
</html>

没错,这样是能显示,不过,如果我使用一个图片就要写上这么多的代码,我宁愿不使用这个图片。

那么在html中该怎么使用写好的svg文档呢?

一、embbed

demo.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body >
	<embed src="demo.svg" width="300" height="100" type="image/svg+xml"
		pluginspage="http://www.adobe.com/svg/viewer/install/" />
</body>
</html>

可以正常显示。

二、object标签

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body >
	<object data="demo.svg" width="300" height="100" type="image/svg+xml"
		codebase="http://www.adobe.com/svg/viewer/install/" />
</body>
</html>

依然可以正常显示。

三、使用iframe来引入svg文档,iframe是浏览器兼容最好的一种方式,如果你要使用svg的话,建议还是使用iframe

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body >
	<iframe src="demo.svg" width="300" height="100"></iframe>
</body>
</html>

显示结果:

image.png

四、在html5中其实有更简单的写法,即直接使用svg标签

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body >
	<svg width="100%" height="100%" version="1.1"
	xmlns="http://www.w3.org/2000/svg">
        	<circle cx="100" cy="50" r="40" stroke="black"
        	stroke-width="2" fill="#123456"/>
	</svg>
</body>
</html>

结果如下:

image.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值