关于svg

最近项目要使用d3,因此顺便补习了一下他所须要的svg,但愿对你们能有所帮助浏览器

什么是SVG

  • SVG 指可伸缩矢量图形 (Scalable Vector Graphics)网络

  • SVG 用来定义用于网络的基于矢量的图形svg

  • SVG 使用 XML 格式定义图形工具

  • SVG 图像在放大或改变尺寸的状况下其图形质量不会有所损失url

  • SVG 是万维网联盟的标准spa

  • SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个总体插件

  • SVG 是W3C 推荐标准code

SVG 的历史和优点

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

  • 参与定义 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引入HTML的几种方式

  • 经过 <embed> 标签

  • <embed> 标签是被全部主流浏览器支持并被使用的脚本,被Adobe SVG Viewer 所推荐,但不能适用于合法的XHTML文件中,由于<embed>标签并不存在于HTML规范中

  • pluginspage 属性指向下载插件的 URL

<embed src="rect.svg" width="300" height="100" 
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />
  • 经过 <object> 标签

  • <object> 标签是 HTML 4 的标准标签,被全部较新的浏览器支持。它的缺点是不容许使用脚本

  • codebase 属性指向下载插件的 URL。

<object data="rect.svg" width="300" height="100" 
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />
  • 经过 <iframe> 标签

  • <iframe> 标签可工做在大部分的浏览器中。

<iframe src="rect.svg" width="300" height="100">
</iframe>

SVG 形状

  • 矩形 <rect>

  • 圆形 <circle>

  • 椭圆 <ellipse>

  • 线 <line>

  • 折线 <polyline>

  • 多边形 <polygon>

  • 路径 <path>

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">

<rect width="300" height="100" 
style="fill:rgb(0,0,255);stroke-width:1;
stroke:rgb(0,0,0)"/>

</svg>
  • width 和 height 属性可定义矩形的高度和宽度

  • style 属性用来定义 CSS 属性,

  • x 属性定义矩形的左侧位置(例如,x="0" 定义矩形到浏览器窗口左侧的距离是 0px)

  • y 属性定义矩形的顶端位置(例如,y="0" 定义矩形到浏览器窗口顶端的距离是 0px)

  • rx 和 ry 属性可以使矩形产生圆角。


  • CSS 的 fill 属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

  • CSS 的 stroke-width 属性定义矩形边框的宽度

  • CSS 的 stroke 属性定义矩形边框的颜色

  • CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)

  • CSS 的 stroke-opacity 属性定义笔触颜色的透明度(合法的范围是:0 - 1)

  • CSS 的 opacity 属性定义整个元素的透明值(合法的范围是:0 - 1)


<circle> 圆形

  • cx 和 cy 属性定义圆点的 x 和 y 坐标。若是省略 cx 和 cy,圆的中心会被设置为 (0, 0)

  • r 属性定义圆的半径。


<ellipse> 椭圆形

  • cx 属性定义圆点的 x 坐标

  • cy 属性定义圆点的 y 坐标

  • rx 属性定义水平半径

  • ry 属性定义垂直半径


<line> 线条

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

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

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

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


<polygon> 多边形

  • 用法 points="220,100 300,210 170,250"

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


<polyline> 折线

  • 用来建立仅包含直线的形状

  • points="0,0 0,20 20,20 20,40 40,40 40,60"

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


<path> 路径

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

  • 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 闭合路径

图片描述

直接看图吧 使用方法和功能已经很详细了

SVG渐变

  • SVG 渐变必须在 <defs> 标签中进行定义。

  • 在 SVG 中,有两种主要的渐变类型:

    • 线性渐变 <linearGradient>

    • 放射性渐变 <radialGradient>


<linearGradient> 线性渐变

  • 线性渐变可被定义为水平、垂直或角形的渐变:

    • 当 y1 和 y2 相等,而 x1 和 x2 不一样时,可建立水平渐变

    • 当 x1 和 x2 相等,而 y1 和 y2 不一样时,可建立垂直渐变

    • 当 x1 和 x2 不一样,且 y1 和 y2 不一样时,可建立角形渐变

<?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">

<defs>
<linearGradient id="orange_red" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:rgb(255,255,0);
stop-opacity:1"/>
<stop offset="100%" style="stop-color:rgb(255,0,0);
stop-opacity:1"/>
</linearGradient>
</defs>

<ellipse cx="200" cy="190" rx="85" ry="55"
style="fill:url(#orange_red)"/>

</svg>
  • <linearGradient> 标签的 id 属性可为渐变定义一个惟一的名称
    fill:url(#orange_red) 属性把 ellipse 元素连接到此渐变

  • <linearGradient> 标签的 x一、x二、y一、y2 属性可定义渐变的开始和结束位置
    渐变的颜色范围可由两种或多种颜色组成。每种颜色经过一个 <stop> 标签来规定。offset 属性用来定义渐变的开始和结束位置。



<radialGradient> 放射性渐变
  • cx、cy 和 r 属性定义外圈

  • fx 和 fy 定义内圈 渐变的颜色范围可由两种或多种颜色组成。

  • 每种颜色经过一个 <stop> 标签来规定。

  • offset 属性用来定义渐变的开始和结束位置。

<?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">

<defs>
<radialGradient id="grey_blue" cx="50%" cy="50%" r="50%"
fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(200,200,200);
stop-opacity:0"/>
<stop offset="100%" style="stop-color:rgb(0,0,255);
stop-opacity:1"/>
</radialGradient>
</defs>

<ellipse cx="230" cy="200" rx="110" ry="100"
style="fill:url(#grey_blue)"/>

</svg>

clipboard.png

<?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">

<defs>
<radialGradient id="grey_blue" cx="20%" cy="40%" r="50%"
fx="50%" fy="50%">
<stop offset="0%" style="stop-color:rgb(200,200,200);
stop-opacity:0"/>
<stop offset="100%" style="stop-color:rgb(0,0,255);
stop-opacity:1"/>
</radialGradient>
</defs>

<ellipse cx="230" cy="200" rx="110" ry="100"
style="fill:url(#grey_blue)"/>

</svg>

clipboard.png

ok 基本上全部的SVG都在这里了但愿对你们有多帮助

SVG资料:http://www.w3school.com.cn/sv...

https://developer.mozilla.org/zh-CN/docs/Web/SVG

SVG工具:http://editor.method.ac/

SVG工具使用
clipboard.png

生成的下述文件能够根据上述内容去寻找本身想用的部分或总体去选用

clipboard.png

相关文章
相关标签/搜索