上一章HTML5教程请查看:html5 canvas绘图
在本教程中,你将学习如何使用HTML5 svg元素在web页面上绘制矢量图形,以及和canvas之间的区别。
SVG是什么?可缩放向量图形(SVG)是一种基于xml的图像格式,用于为web定义基于二维向量的图形。与光栅图像(如.jpg、.gif、.png等)不同,矢量图像可以按比例放大或缩小到任何程度,而不会丢失图像质量。
SVG图像是使用遵循XML模式的一系列语句绘制的——这意味着可以使用任何文本编辑器(如记事本)创建和编辑SVG图像。与其他图像格式(如JPEG、GIF、PNG等)相比,使用SVG还有其他几个优点。
- 可以搜索、索引、编写脚本和压缩SVG图像。
- 可以使用JavaScript实时创建和修改SVG图像。
- SVG图像可以以任何分辨率打印出高质量的图像。
- SVG内容可以使用内置的动画元素进行动画处理。
- SVG图像可以包含到其他文档的超链接。
将SVG嵌入到HTML页面中可以使用HTML5 < SVG > 元素将SVG图形直接嵌入到文档中。
让我们看一下下面的例子来理解它是如何工作的:
将SVG嵌入到HTML页面中可以使用HTML5 < SVG > 元素将SVG图形直接嵌入到文档中。
让我们看一下下面的例子来理解它是如何工作的:
<
!DOCTYPE html>
<
html lang="en">
<
head>
<
meta charset="utf-8">
<
title>在HTML中嵌入SVG<
/title>
<
/head>
<
body>
<
svg width="300" height="200">
<
text x="10" y="20" style="font-size:14px;
">
你的浏览器支持SVG
<
/text>
对不起,你的浏览器不支持SVG
<
/svg>
<
/body>
<
/html>
注意:所有主要的现代web浏览器,如Chrome、Firefox、Safari和Opera,以及Internet Explorer 9和以上都支持内联SVG呈现。
使用SVG绘制路径和形状下一节将解释如何使用新引入的HTML5 < svg> 元素在web页面上绘制基于矢量的基本路径和形状。
画一条线可以用SVG绘制的最基本的路径是一条直线,下面的示例将向你展示如何使用SVG < line> 元素创建直线:
<
svg width="300" height="200">
<
line x1="50" y1="50" x2="250" y2="150" style="stroke:red;
stroke-width:3;
" />
<
/svg>
< line> 元素的属性x1、x2、y1和y2画了一条从(x1,y1)到(x2,y2)的线。
画一个矩形可以使用SVG < rect> 元素创建简单的矩形和正方形形状,下面的示例将向你展示如何使用SVG创建和样式化矩形:
<
svg width="300" height="200">
<
rect x="50" y="50" width="200" height="100" style="fill:orange;
stroke:black;
stroke-width:3;
" />
<
/svg>
< rect> 元素的属性x和y定义了矩形左上角的坐标,属性width和height指定形状的宽度和高度。
画一个圆你还可以使用SVG < circle> 元素创建圆形图形,下面的例子将向你展示如何使用SVG创建和样式一个圆形:
<
svg width="300" height="200">
<
circle cx="150" cy="100" r="70" style="fill:lime;
stroke:black;
stroke-width:3;
" />
<
/svg>
< circle> 元素的属性cx和cy定义了圆心的坐标,属性r指定了圆心的半径。但是,如果省略或未指定属性cx和cy,则将圆心设置为(0,0)。
用SVG绘制文本你还可以使用SVG在web页面上绘制文本。SVG中的文本呈现为图形,因此你可以对其应用所有的图形转换,但它仍然像文本一样—这意味着它可以被用户选择并作为文本复制。让我们尝试一个例子,看看这是如何工作的:
<
svg width="300" height="200">
<
text x="20" y="30" style="fill:purple;
font-size:22px;
">
Welcome to srcmini!
<
/text>
<
text x="20" y="30" dx="0" dy="20" style="fill:navy;
font-size:14px;
">
在这里你会发现很多有用的信息!
<
/text>
<
/svg>
< text> 元素的属性x和y以绝对值定义左上角的位置,而属性dx和dy指定相对位置。
你甚至可以使用< tspan> 元素来重新格式化或定位< text> 元素中包含的文本的范围。文本包含在不同的tspan中,但在同一文本元素中可以同时选中—当你单击并拖动以选择文本时。但是,不能同时选择单独文本元素中的文本。让我们来看一个例子:
<
svg width="300" height="200">
<
text x="30" y="15" style="fill:purple;
font-size:22px;
transform:rotate(30deg);
">
<
tspan style="fill:purple;
font-size:22px;
">
Welcome to srcmini!
<
/tspan>
<
tspan dx="-230" dy="20" style="fill:navy;
font-size:14px;
">
在这里你会发现很多有用的信息!
<
/tspan>
<
/text>
<
/svg>
SVG和Canvas之间的区别HTML5引入了两个新的图形元素< canvas> 和< svg> ,用于在web上创建丰富的图形,但它们从根本上是不同的。
【html5 SVG绘制以及和canvas的区别 – HTML5教程】下表总结了这两个元素之间的一些基本区别,这将帮助你理解如何有效和适当地使用这些元素。
SVG | Canvas |
基于向量(由形状组成) | 基于栅格(由像素组成) |
多个图形元素,它们成为页面的DOM树的一部分 | 在行为上类似于< img> 的单个元素。画布图可以保存为PNG或JPG格式 |
通过脚本和CSS修改 | 仅通过脚本修改 |
良好的文本呈现能力 | 文本呈现能力差 |
使用更少的对象或更大的表面,或两者兼而有之,可以获得更好的性能 | 使用更多的对象或更小的表面,或两者兼而有之,可以获得更好的性能 |
更好的可伸缩性。可以打印在任何分辨率的高质量。不会出现像素化 | 可怜的可伸缩性。不适合高分辨率打印。像素可能发生 |
推荐阅读
- html5 canvas绘图 – HTML5教程
- html5 input新输入类型 – HTML5教程
- html ISO语言代码 – HTML教程
- html URL编码 – HTML教程
- html媒体类型和字符编码参考文档 – HTML教程
- html颜色名称参考文档 – HTML教程
- html ASCII完全表查询 – HTML教程
- html ASCII码参考文档 – HTML教程
- html字体参考文档 – HTML教程