SVG 意为可缩放矢量图形(Scalable Vector Graphics)。
SVG 使用 XML 格式定义图像。

什么是SVG?

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

SVG 的历史和优势

在 2003 年一月,SVG 1.1 被确立为 W3C 标准。

参与定义 SVG 的组织有:太阳微系统、Adobe、苹果公司、IBM 以及柯达。

与其他图像格式相比,使用 SVG 的优势在于:

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

SVG 的主要竞争者是 Flash。

与 Flash 相比,SVG 最大的优势是与其他标准(比如 XSL 和 DOM)相兼容。而 Flash 则是未开源的私有技术。

查看 SVG 文件

今天,所有浏览器均支持 SVG 文件,不过需要安装插件的 Internet Explorer 除外。插件是免费的,比如 Adobe SVG Viewer

以上说明来源于w3c

接下来开始正式进入svg学习.........................

1、首先看一个例子svg圆和文字的创建

<!--svg圆和文字-->
<svg id="diag" width="400" height="400" style="border:1px solid #000;">
<circle cx="50" cy="50" r="50"/>
<text y="100" x="100" font-family="Arial" font-size="60px" fill="#f00" text-anchor="left">
SVG 文本
</text>
</svg>

2、SVG 绘制矩形

<svg width="200" height="200">
<rect x="10" y="10" width="100" height="100" stroke="red" fill="#ccc" />
</svg> stroke="red" 红色边框 fill="#ccc"灰色填充色

3、SVG 绘制圆形

 <svg width="200" height="200">
<rect x="10" y="10" width="100" height="100" stroke="red" fill="#ccc" />
<circle cx="50" cy="50" r="40" stroke="#00f" fill="none" stroke-width="8"/>
</svg> cx="50" 圆心的x坐标值
cy="50" 圆心的y坐标值
r="40" 圆的半径
fill="none" 不添加填充
stroke-width="8" 边框宽度为8
stroke="#00f" 边框颜色

4、svg的变换

<svg width="200" height="200">
<g transform="translate(60,0) rotate(30) scale(0.75)" id="sh_group">
<rect x="10" y="10" width="100" height="100" stroke="#ccc" fill="#ccc"/>
<circle cx="100" cy="100" r="40" stroke="#f00" fill="none" stroke-width="5"/>
</g>
</svg> <g></g> 代表一个组,可以将多个元素结合起来
transform:变换
translate(60,0) 平移到60x 0y
rotate(30) 旋转30度
scale(0.75) 缩放到之前的0.75倍

5、svg复用内容

<svg width="200" height="200">
<defs>
<g id="sh_group">
<rect x="10" y="10" width="100" height="100" stroke="#ccc" fill="#ccc"/>
<circle cx="100" cy="100" r="40" stroke="#f00" fill="none" stroke-width="5"/>
</g>
</defs>
<use xlink:href="#sh_group" transform="translate(60,0) rotate(30) scale(0.75)"/>
<use xlink:href="#sh_group" transform="translate(120,80) rotate(30) scale(0.45)"/>
<use xlink:href="#sh_group" transform="translate(20,60) rotate(30) scale(0.25)"/>
</svg> defs 用于定义留待将来使用的内容。
use 用来链接到defs元素定义的内容。

6、为矩形和圆形添加纹理

 <svg width="200" height="200">
<defs>
<pattern id="grap" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="67" viewBox="0 0 100 67">
<image x="0" y="0" width="100" height="67" xlink:href="https://www.baidu.com/img/bd_logo1.png"></image>
</pattern>
<linearGradient id="redBLackGradient">
<stop offset="0%" stop-color="#000"></stop>
<stop offset="100%" stop-color="#f00"></stop>
</linearGradient>
</defs>
<rect width="100" height="80" x="10" y="20" stroke="red" fill="url(#redBLackGradient)"/>
<circle cx="120" cy="80" r="40" stroke="#00f" stroke-width="8" fill="url(#grap)" />
</svg> pattern 定义一个待填充的图像
linearGradient:定义一个渐变
stop:设置渐变的开始值以及结束值
fill="url(#redBLackGradient)加载预设的纹理或者渐变

7、svg路径

<svg width="300" height="300">
<path d="M-25,-50L-10,-80L-20,-80L-5,-110L-15,-110L0,-140L15,-110L5,-110L20,-80L10,-80L25,-50Z" fill="#f00" transform="translate(100,200)" id="can">
</path>
</svg> path:自由形态的路径
d:代表数据
M:代表moveTo 移动到某一点
L:代表lineto 划线至
Q:代表二次曲线
Z:代表闭合路径

8、svg 二次曲线路径

<svg width="400" height="400">
<defs>
<pattern id="gd" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="67" viewBox="0 0 100 67">
<image x="0" y="0" width="100" height="67" xlink:href="https://www.baidu.com/img/bd_logo1.png"></image>
</pattern>
</defs>
<g transform="translate(-10,350)" stroke-width="20" stroke="url(#gd)" stroke-linejoin="round">
<path d="M0,0Q170,-50 260,-190Q310,-250 410,-250" fill="none">
</path>
</g>
</svg>
stroke-linejoin="round":这段代码作用是让二次曲线的接口处变圆滑

9、svg 文本

<svg width="600" height="200">
<text x="10" y="60" font-family="Arial" stroke="#0ff" font-size="40px" font-weight="bold">
dfksfgjfgdj
</text>
</svg>
定义的方法和css定义基本差不多

SVG 学习(一)的更多相关文章

  1. [翻译svg教程]svg学习系列 开篇

    目录 [翻译svg教程]svg学习系列 开篇 [翻译svg教程 ]svg 的坐标系统 [翻译svg教程]svg 中的g元素 [翻译svg教程]svg中矩形元素 rect [翻译svg教程]svg中的c ...

  2. HTML5实战——svg学习

    百度百科: SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG是W3C制定的一种新的二维矢量图形格式,也 ...

  3. SVG 学习<八> SVG的路径——path(2)贝塞尔曲线命令、光滑贝塞尔曲线命令

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  4. SVG 学习<七> SVG的路径——path(1)直线命令、弧线命令

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  5. SVG 学习<六> SVG的transform

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  6. SVG 学习<五> SVG动画

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  7. SVG 学习<四> 基础API

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  8. SVG 学习<三>渐变

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  9. SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

随机推荐

  1. Behavioral模式之Observer模式

    1.意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都得到通知并被自己主动更新. 2.别名 依赖(dependents).公布-订阅(Publish-Subscr ...

  2. HTTP 长连接 使用场景

    offer 80 非常多应用譬如监控.即时通信.即时报价系统都须要将后台发生的变化实时传送到client而无须client不停地刷新.发送请求. 在 多好科技的那位技术指导问我这个是由于他们做物连网, ...

  3. testbench中将外部数据引入输出的方法(转载)

    在进行HDL的仿真测试时,除了用较为直观的波形仿真图像以外,通过编写测试文件testbench进行仿真并将仿真结果保存在对应的文件,显得尤为重要.文件的操作主要用到读和写两种操作. 1. 读操作 读操 ...

  4. HDU 1712 ACboy needs your help(包背包)

    HDU 1712 ACboy needs your help(包背包) pid=1712">http://acm.hdu.edu.cn/showproblem.php? pid=171 ...

  5. Linux/UNIX先进I/O

    先进I/O 非阻塞IO 非阻塞I/O因此,我们可以称之为open.read和write这种I/O操作,而这些操作不会永久阻止.我们假设,该操作不能完成,然后调用立即返回一个错误.则表示该操作将继续作为 ...

  6. 小工具:内存监视器(SystemMonitor)

    卸了360之后,与之捆绑的加速球也没了.加速球可以查看剩余内存量,清理残留进程,有的时候不觉得这小玩意有多大作用,卸了之后才知道后悔. 加速球的替代方案比比皆是,如Windows自带的任务管理器,窗口 ...

  7. Swiftly语言学习1

    单纯值: 1.let常量声明,var声明变量(同时宣布福值,编译器会自己主动判断出类型) var myVariable = 42 myVariable 50 let myConstant = 42 l ...

  8. HDU 3117 Fibonacci Numbers(围绕四个租赁斐波那契,通过计++乘坐高速动力矩阵)

    HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵高速幂) ACM 题目地址:HDU 3117 Fibonacci Numbers 题意:  求第n个斐波那契数的 ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2) ...

  10. php_PHP与Mysql的连接

    展示效果: 繁写: <?php    echo "This is a test</br>";     echo "asdfasdfadsf"; ...