SVG笔记

一:什么是SVG?

对于SVG的定义如下:

①:SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics)。

②:SVG 用于定义用于网络的基于矢量的图形。

③:SVG 使用 XML 格式定义图形。

④:SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失。

⑤:SVG 是万维网联盟的标准。


二:SVG的优势是什么?

SVG的优势有如下定义:

①:SVG 图像可通过文本编辑器来创建和修改。

②:SVG 图像可被搜索、索引、脚本化或压缩。

③:SVG 是可伸缩的。

④:SVG 图像可在任何的分辨率下被高质量地打印。

⑤:SVG 可在图像质量不下降的情况下被放大。


三:SVG与Canvas的区别在于什么地方?

①:SVG 是一种使用 XML 描述 2D 图形的语言。    Canvas 通过 JavaScript 来绘制 2D 图形。

②:SVG 基于 XML,这意味着 SVG可以给每一个图形绑定事件,但是Canvas是基于JavaScript,这就意味着Canvas无法给每一个图形绑定事件。(只能给canvas整个画布绑定事件,还有一种解决方案是使用第三方库)。

在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

③:Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。

如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

④:兼容性不同。 SVG的兼容性更好。

SV与Canvas之间的比较:

Canvas

-------依赖分辨率

-------不支持事件处理器

-------弱的文本渲染能力

-------能够以 .png 或 .jpg 格式保存结果图像

-------最适合图像密集型的游戏,其中的许多对象会被频繁重绘

SVG

-------不依赖分辨率

-------支持事件处理器

-------最适合带有大型渲染区域的应用程序(比如谷歌地图)

-------复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)

-------不适合游戏应用


四:SVG在html中是怎样使用的?

首先SVG引入到html中的方法如下:

SVG 文件可通过以下标签嵌入到HTML 文档:<embed>、<object>、<iframe>。

使用<embed>标签引入 ------ <embed src="xxx.svg" type="image/svg+xml" />

①:优势:所有主要浏览器都支持,并允许使用脚本。

②:缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)。

使用<object>标签引入 ------- <object data="xxx.svg" type="image/svg+xml"></object>

①:优势:所有主要浏览器都支持,并支持HTML4,XHTML和HTML5标准。

②:缺点:不允许使用脚本。

使用<iframe>标签引入 ------- <iframe src="xxx.svg"></iframe>

①:优势:所有主要浏览器都支持,并允许使用脚本。

②:缺点:不推荐在HTML4和XHTML中使用(但在HTML5允许)。

Tip:值得注意的地方是在使用单标签的时候<embed src="" />一定要有  /  闭合不然会报错!!!

SVG的代码可以直接嵌入到HTML页面中,或直接链接到SVG文件。

直接在HTML嵌入SVG代码

在Firefox、Internet Explorer9、谷歌Chrome和Safari中,你可以直接在HTML嵌入SVG代码。

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

         <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red">

</svg>

链接到SVG文件

可以用标签链接到一个SVG文件:链接到SVG文件。

<a href="circle1.svg">View SVG file</a>


五:SVG标签的元素属性有那几个?

在SVG标签中其自身所拥有的属性就和Canvas的一样就只有两个属性:width="";和height="";


六:对SVG默认形状的一个认识?

SVG和Canvas一样都是行内块级元素,默认的宽高大小都是300px  X  150px;


七:对SVG的图形的认知?(SVG Shapes)

SVG有一些预定义的形状元素,可被开发者使用和操作:

-------矩形 <rect>

-------圆形 <circle>

-------椭圆 <ellipse>

-------线     <line>

-------折线  <polyline>

-------多边形 <polygon>

-------路径   <path>

SVG 矩形 ---- <rect>

实例1---------- <rect> 标签可用来创建矩形,以及矩形的变种  如下代码显示:

<svg width="600" hegiht="600" id="mySvg">

         <rect   x="X轴起始坐标"  y="Y轴起始坐标"  rx="产生圆角的大小"  ry="产生圆角的大小"  width="矩形的宽度"  height="矩形的高度"  stroke="描边的颜色"  stroke-width="描边的宽度"  fill="填充的颜色"   />

</svg>

SVG 圆形 ---- <circle>

实例2----------<circle>标签可用来创建一个圆   如下代码显示:

<svg  width="600"  height="600">

        <circle  cx="X轴起始坐标"  cy="Y轴起始坐标"  r="圆的半径"  stroke="描边的颜色"  stroke-width="描边的宽度"  fill="填充的颜色"  />

</svg>

SVG 椭圆 ---- <ellipse>

实例3----------<ellipse>标签可用来创建一个椭圆 

Tip:椭圆与圆很相似。不同之处在于椭圆有不同的x和y半径,而圆的x和y半径是相同的。 如下代码显示:

<svg    width="600"  height="600"  id="mySvg">

        <ellipse  cx="X轴起始坐标"  cy="Y轴起始坐标"  rx="X轴的半径"  ry="Y轴的半径"  stroke="描边的颜色"  stroke-width="描边的宽度"  fill="填充的颜色"  />

</svg>

代码解析:

-------CX属性定义的椭圆中心的x坐标

-------CY属性定义的椭圆中心的y坐标

-------RX属性定义的水平半径

-------RY属性定义的垂直半径

SVG 直线 ----- <line>

实例4 ---------- <line> 标签可用来创建直线    下面是SVG代码:

<svg  width="600"  height="600"   id="mySvg">

      <line  x1="0"  y1="0"  x2="200"  y2="200"  style="stroke:rgb(255,0,0);stroke-width:2"  />

</svg>

代码解析:

-------x1 属性在 x 轴定义线条的开始

-------y1 属性在 y 轴定义线条的开始

-------x2 属性在 x 轴定义线条的结束

-------y2 属性在 y 轴定义线条的结束

SVG 多边形 ---------  <polygon>

实例5 ------- <polygon> 标签用来创建含有不少于三个边的图形。 

多边形是由直线组成,其形状是"封闭"的(所有的线条 连接起来)。如下代码显示:

<svg   width="600"   height="600"  id="mySvg">

       <polygon  points="200,10,250,190,160,210"  style="fill:lime;stroke:purple;stroke-width:1"  />

</svg>

利用多边形创建一个五角星

<svg  width="600"  height="600">

       <polygon points="100,10 40,180 190,60 10,60 160,180"   style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;">

</svg>

改变 fill-rule 属性为 "evenodd"可有另外一种效果。

代码解析:

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

SVG 曲线 ----- <polyline>

实例6 ------- <polyline> 标签元素是用于创建任何只有直线的形状  如下代码显示:

<svg   width="600"  height="600">

      <polyline   points="20,20  40,25  60,40  80,120  120.140  200,180"  style="fill:none;stroke:black;stroke-width:3" />

</svg>

SVG 路径 -------  <path>

实例7 --------  <path>  标签元素用于定义一个路径。

下面的命令可用于路径数据:

M = moveto

L = lineto

H = horizontal lineto

V = vertical lineto

C = curveto

S = smooth curveto

Q = quadratic Bézier curve

T = smooth quadratic Bézier curveto

A = elliptical Arc

Z = closepath

注意:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

<svg width="600"  height="600">

       <path  d="M150 0  L75  200  L225  200  Z "  />

</svg>

代码解析:

上面的例子定义了一条路径,它开始于位置150 0,到达位置75 200,然后从那里开始到225 200,最后在150 0关闭路径。

SVG 文本 --------- <text>

实例8  ---------  <text>  标签元素用于定义文本。 如下代码显示:

<svg   width="600"  height="600">

      <text  x="70"  y="15"  fill="red"   transform="rotate(30 20,40)">I  Love  You</text>

</svg>

以上就是对SVG的大概了解的概况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是SVG? SVG指可伸缩矢量图形(Scalable Vector Graphics); SVG用来定义用...
    清心挽风阅读 1,430评论 1 3
  • SVG 学习笔记 SVG是什么 SVG 指可伸缩矢量图形 (Scalable Vector Graphics) S...
    Penn_Xu阅读 1,036评论 0 1
  • 一.什么是SVG? SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics),它用来定义...
    nightZing阅读 17,177评论 11 62
  • 上个项目用到svg实现一个水流的动画,鉴于没学习几天,所以懂的也不多,就此分享一下。首先svg是什么,svg可缩放...
    会飞的猪l阅读 4,200评论 0 5
  • SVG API: SVG是一种可缩放矢量图形,一种二维图形表示语言 与canvas不同的是,在浏览器的开发工具中能...
    Iris_mao阅读 1,059评论 0 5