html5 SVG

3 篇文章 0 订阅

1 什么是SVG?

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用来定义用于网络的基于矢量的图形
SVG 使用 XML 格式定义图形
SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
SVG 是万维网联盟的标准
SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体

SVG 与 Canvas两者间的区别:

SVG 是一种使用 XML 描述 2D 图形的语言。
Canvas 通过 JavaScript 来绘制 2D 图形。
SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

SVG 与 Canvas两者间的区别:

在这里插入图片描述

2 SVG 文件的优势

SVG 可被非常多的工具读取和修改(比如记事本)
SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
SVG 是可伸缩的
SVG 图像可在任何的分辨率下被高质量地打印
SVG 可在图像质量不下降的情况下被放大
SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
SVG 可以与 Java 技术一起运行
SVG 是开放的标准
SVG 文件是纯粹的 XML

3 SVG 文件的创建

SVG文件的结构

SVG 使用 XML 编写,SVG 文件必须使用 .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="red"/>

</svg> 

规定本SVG文件是独立的还是包含一个对外部文件的引用。
第二和第三行引用了这个外部的SVG DTD

SVG文档以根元素 “<svg” , Version属性定义了SVG的版本
,xmlns属性定义了SVG的名称空间

3-1 SVG文件的创建[内嵌svg]

<!DOCTYPE html>
<html>
<body>   
  <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">     <polygon points="100,10 40,180 190,60 10,60 160,180"  style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;">   </svg>
  </body>
  </html>

3-2 SVG文件的创建[外部svg]

SVG 文件可通过以下标签嵌入 HTML 文档:
、 或者 。

3-2-1 使用 标签

<embed> 标签被所有主流的浏览器支持,并允许使用脚本。
推荐使用html5文档结构标签

<embed src="images/01 svg_create.svg" width="300" height="300“type="image/svg+xml"  />

3-2-1 使用 标签

标签可工作在大部分的浏览器中。
<iframe src="rect.svg" width="300" height="100"> </iframe>

4-1 SVG创建矩形

<svg width="100%" height="100%" version="1.1"  xmlns=http://www.w3.org/2000/svg>
<rect width=“300” height=“100"  style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"/>
</svg>

代码解释:
rect 元素的 width 和 height 属性可定义矩形的高度和宽度
style 属性用来定义 CSS 属性
CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)
CSS 的 stroke-width 属性定义矩形边框的宽度
CSS 的 stroke 属性定义矩形边框的颜色

4-2 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="red"/>
</svg>

代码解释:
cx 和 cy 属性定义圆点的 x 和 y 坐标。如果省略 cx 和 cy,圆的中心会被设置为 (0, 0)
r 属性定义圆的半径。

4-3 SVG创建椭圆

椭圆有不同的 x 和 y 半径,而圆的 x 和 y 半径是相同的

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="300" cy="150" rx="200" ry="80" style="fill:rgb(200,100,50); stroke:rgb(0,0,100);stroke-width:2"/> 
</svg>

代码解释:
cx 属性定义圆点的 x 坐标
cy 属性定义圆点的 y 坐标
rx 属性定义水平半径
ry 属性定义垂直半径

4-4 SVG创建直线

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke-width:2"/>
</svg>

代码解释:
x1 属性在 x 轴定义线条的开始
y1 属性在 y 轴定义线条的开始
x2 属性在 x 轴定义线条的结束
y2 属性在 y 轴定义线条的结束

4-5 SVG创建多边形

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<polygon points="220,100 300,210 170,250" style="fill:#cccccc; stroke:#000000;stroke-width:1"/>
</svg>

代码解释:
points 属性定义多边形每个角的 x 和 y 坐标

4-6 SVG创建折线

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">

<polyline points="0,0 0,20 20,20 20,40 40,40 40,60"
style="fill:white;stroke:red;stroke-width:2"/>

</svg>

代码解释:

points 属性定义多边形每个角的 x 和 y 坐标

4-7 SVG创建路径

<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M250 150 L150 350 L350 350 Z" />
</svg>

标签参数详解
下面的命令可用于路径数据:
M = moveto
L = lineto
H = horizontal lineto
V = vertical lineto
C = curveto
S = smooth curveto
Q = quadratic Belzier curve
T = smooth quadratic Belzier curveto
A = elliptical Arc
Z = closepath
注释:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

  1. M 起点X,起点Y
  2. L(直线)终点X,终点Y
  3. H(水平线)终点X
  4. V(垂直线)终点Y
  5. M 10,20 L 80,50
    M 10,20 V 50
    M 10,20 H 90

在这里插入图片描述

  • A指令
  • 允许不闭合。可以想像成是椭圆的某一段,共七个参数:
  • A RX,RY,XROTATION,FLAG1,FLAG2,X,Y
  • RX,RY指所在椭圆的半轴大小
  • XROTATION指椭圆的X轴与水平方向顺时针方向夹角,可以想
    像成一个水平的椭圆绕中心点顺时针旋转XROTATION的角度。
  • FLAG1只有两个值,1表示大角度弧线,0为小角度弧线。
  • FLAG2只有两个值,确定从起点至终点的方向,1为顺时针,0为逆时针
  • X,Y为终点坐标

如:m 200,250 a 150,30 0 1 0 0,70
在这里插入图片描述

5 SVG文本

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<text x="50" y="50" fill="green" style="font-size:60px;">
强大的svg
</text>
</svg>

在这里插入图片描述

SVG参考资料

SVG在线编程器

https://c.runoob.com/more/svgeditor/

20个强大的SVG处理工具

https://www.sohu.com/a/127807686_424243

SVG格式在线转换
http://www.bejson.com/convert/image_to_svg/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值