初识 SVG

作者: 2f04626451a4 | 来源:发表于2019-02-14 00:16 被阅读6次
svg-banner.png

什么是 SVG

SVG,即 Scalable Vector Graphics( 可缩放矢量图形 )的缩写,是 W3C XML 的分支语言之一,用于标记 可缩放矢量图形

目前 SVG 在 Firefox、Opera、Webkit 浏览器、IE 等浏览器中已经部分实现。

SVG 是 XML 语言的一种形式,有点类似 XHTML,它可以用来 绘制矢量图形。SVG 可以通过定义必要的线和形状来创建一个图形,也可以修改已有的位图,或者将这两种方式结合起来创建图形。图形和其组成部分可以变形,可以合成,还可以通过滤镜完全改变外观。

SVG 推出于1999年,之前有几个相互竞争的格式规范被提交到 W3C,但是都没有完全通过。当下的浏览器支持程度请参考 Can I use

即便浏览器实现了一些规范,但实现速度完全不能和它的竞争技术相比,它的竞争技术比如说 HTML Canvas 和 Adobe Flash,都已经实现了成熟的应用接口。

但是 SVG 也有自身的优点,比如它 实现了 DOM 接口( 比 Canvas 方便 ),不需要安装第三方插件 就可以在浏览器中使用( 比 Flash 方便 )。

当然,是否使用 SVG 还要取决于你要实现什么。

SVG 的基本要素

HTML 提供了定义标题、段落、表格等等内容的元素。与此类似,SVG 也提供了一些元素,用于定义 圆形矩形、简单或复杂的 曲线,以及其他形状。

一个简单的 SVG 文档由 <svg> 根元素基本的形状元素 构成。

另外还有一个 g 元素,它用来把若干个基本形状编成一个

从这些开始,SVG 可以成为任何复杂的组合图形。

SVG 支持 渐变旋转滤镜效果JavaScript 接口 等等功能,但是所有这些额外的语言特性,都需要在一个 定义好的图形区域内 实现。

关于 SVG 的注意事项

  • SVG 的元素和属性必须按标准格式书写,因为 XML 是 区分大小写 的( 这一点和 html 不同 )
  • SVG 里的属性值必须 用引号引起来,就算是数值也必须这样做。

SVG 的发展

自从2003年成为 W3C 推荐标准以来,最接近的“完整版” SVG 版本是1.1版,它基于1.0版,并且增加了更多便于实现的模块化内容。

SVG1.1 的第二个版本在2011年成为推荐标准,完整的 SVG1.2 本来是下一个标准版本,但它又被 SVG2.0 取代。SVG2.0 正在制定当中,它采用了类似 CSS3 的制定方法,通过若干松散耦合的组件形成一套标准。

除了完整的 SVG 推荐标准,W3C 工作组还在2003年推出了 SVG TinySVG Basic。这两个配置文件主要瞄准 移动设备。首先 SVG Tiny 主要是为性能低的小设备生成图元,而 SVG Basic 实现了完整版 SVG 里的很多功能,只是舍弃了难以实现的大型渲染( 比如动画 )。2008年,SVG Tiny1.2 成为 W3C 推荐标准。

另外还有一些关于 SVG 打印规格的项目,增加对多页面和颜色管理的支持,但是这项工作已经终止。

一个简单的示例

直接嵌入到 HTML 中

<body>
    
    <svg version="1.1"
         baseProfile="full"
         width="300" height="200"
         xmlns="http://www.w3.org/2000/svg">

        <rect width="100%" height="100%" fill="red" />

        <circle cx="150" cy="100" r="80" fill="green" />

        <text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>

    </svg>
    
</body>

效果展示

svg.png

保存为 svg 文件

sample.svg

<svg version="1.1"
     baseProfile="full"
     width="300" height="200"
     xmlns="http://www.w3.org/2000/svg">

    <rect width="100%" height="100%" fill="red" />

    <circle cx="150" cy="100" r="80" fill="green" />

    <text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>

</svg>

img 标签 引入 svg 文件

<body>
    
    <img src="sample.svg" alt="" />
    
</body>

CSS 背景图片引入

.sample {
    background: url(sample.svg);
}

object 元素引入 svg 文件

<object data="sample.svg" type="image/svg+xml" />

iframe 元素引入 svg 文件

不建议使用

<iframe src="sample.svg"></iframe>

SVG 的绘制流程

绘制流程包括以下几步:

  1. svg 根元素 开始:

    • 舍弃 来自 ( X ) HTML 的 doctype 声明,因为基于 SVG 的 DTD 验证导致的问题比它能解决的问题更多。

    • 属性 version 和属性 baseProfile 属性是必不可少的,供其它类型的验证方式确定 SVG 版本。

    • 作为 XML 的一种方言,SVG 必须正确的绑定命名空间 ( 在 xmlns 属性中绑定 )。 请阅读 命名空间速成 页面获取更多信息。

  2. 绘制一个完全覆盖图像区域的 矩形 <rect/>,把背景颜色设为红色。

  3. 一个半径 80px 的绿色 圆圈 <circle/> 绘制在红色矩形的正中央( 向右偏移 150px,向下偏移 100px )。

  4. 绘制文字 “SVG”。文字被填充为白色, 通过设置居中的锚点把文字定位到期望的位置:在这种情况下,中心点应该对应于绿色圆圈的中点。还可以精细调整字体大小和垂直位置,确保最后的样式是美观的。

SVG 的优势

便于读取和修改

  • SVG 可被非常多的工具读取和修改(比如记事本)

  • SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)

  • SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强

可伸缩

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

  • SVG 可在图像质量不下降地情况下被放大

开放标准

  • SVG 文件是纯粹的 XML

  • SVG 可以与 Java 技术一起运行

  • SVG 与其他标准( 比如 XSL 和 DOM )相兼容

相关文章

  • 初识SVG

    最近遇到一个关于彩票中奖号码展示的项目,里面有很多技术难点,其中一个就是把各开奖号码之间用线段连接起来,这是一个典...

  • SVG初识

    SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络的基于矢量...

  • 初识 SVG

    背景最近在做需求时,设计给的是 svg 的,但是因为定位麻烦,我转成了 png,结果被说变模糊了。无奈只能使用 s...

  • 初识 SVG

    什么是 SVG SVG,即 Scalable Vector Graphics( 可缩放矢量图形 )的缩写,是 W3...

  • (一)初识svg

    一直打算写 关于Android SVG系列的文章,以做学习笔记,反正一直拖着,直到今天....废话不多说了老司机开...

  • Android图片之svg

    1.SVG是什么2.SVG优点3.SVG使用4.获取SVG5.封装使用6.SVG动画 1.SVG是什么? SVG(...

  • SVG的使用

    SVG图片 一. SVG介绍 1.1. SVG概念解析 SVG全称: Scalable Vector Graphi...

  • 资源

    SVG svg icon 对应git(node.js写的) svg animation study svg cs...

  • (第六天)HTML5之SVG的了解与使用&Web数据存储

    SVG 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用...

  • svg standalone

    简单的 SVG 实例 一个简单的SVG图形例子: 这里是SVG文件(SVG文件的保存与SVG扩展): "http:...

网友评论

    本文标题:初识 SVG

    本文链接:https://www.haomeiwen.com/subject/lxxseqtx.html