一、简介
SVG是使用XML来描述二维图形和绘图的程序语言,2003年1月14成为W3C推荐标准;
特性:
1、是一种可伸缩矢量图形
2、是使用xml格式定义用于网络的基于矢量的图形
3、放大或改变图片的尺寸其质量不会有所损失
4、SVG文件必须使用.svg后缀来保存

SVG图形的创建(分两种方式)

html中直接创建:
    <svg width="" height="" version="1.1" 
    xmlns="http://www.w3.org/2000/svg">
        // 插入需要的图形
    </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">
        // 插入需要的图片
    </svg>
 SVG文件可通过一下标签嵌入HTML(外部的引入的.svg文件方式):

<embed>案例:
    <embed src="rect.svg" width="300" height="100" type="image/svg+xml"
        pluginspage="http://wwwadobe.com/svg/viewer/install/" />
        
<object>案例:
    <object data="rect.svg" width="300" height="100"     
    type="image/svg+xml"
    codebase="http://www.adobe.com/svg/viewer/install/" />
 
<iframe>案例:
    <iframe src="rect.svg" wodth="300" height="100"></iframe>
 二、创建SVG图形
 所创建的元素都要放在svg元素中才会生效
一、矩形(<rect>标签)

<svg width="100%" height="100%" version="1.1"
xmlns="http://www.w3.org/2000/svg">
    <rect width="30" height="40" x="20" y="20"
    style="fill:rgb(0,0,255); stroke-width:1; stroke:rgb(0,0,0)" />
</svg>
注解:
    rect属性:
        x: 定义矩形左侧位置
        y: 定义矩形顶端位置
        width: 定义矩形宽度
        height: 定义矩形高度
        style: 设置矩形样式
***style样式包含(svg形状通用):
fill: 定义矩形填充颜色
stroke-width: 定义矩形边框宽度
stroke: 定义矩形边框的颜色
fill-opcity: 定义填充颜色透明度
stroke-opacity: 定义边框颜色的透明度
opcity: 定义图形全部的透明度

二、圆形(<circle>标签)
 

<circle cx="50" cy="50" r="20" stroke="black" stroke-width="2" 
fill="red">
注解:
    cx和cy属性定义圆形的x和y坐标
    stroke: 定义黑色圆背景
    stroke-width: 定义圆边框宽度
    fill: 定义边框颜色
三、椭圆(<ellipse>标签)

<ellipse cx="200" ct="150px"
style="fill:rgb(200, 100, 50); stroke:rgb(0,0,100); stroke-width:2;">
 
注解:
    cx: 圆点的x坐标
    cy: 圆点的y坐标
    rx: 水平半径
    ry: 垂直半径
 四、线条(<line> 标签)

<line x1="0" y1="0" x2="300" y2="300" style="stroke: rgb(99,99,99); stroke-width:2" />
 
x1, y1线条开始的位置;x2, y2线条结束的位置
 五、多边形(<polygon> 标签)

<polygon points="220,100 300,210 170,250" style="fill: #ccc; stroke: #000; stroke-width:1" />
 
注解:points属性定义多边形每个角的x 和 y 坐标
 六、折线(<polyline>标签)

<polyline points="0,0 0,20 20,20 20,40 40,40 40,60" 
style="fill:white; stroke:red; stroke-width: 2" />
 
注解: points属性定义折现每个拐角的 x 和 y 坐标
七、路径(<path> 标签)

<path d="M250 150 L150 350 L350 350 Z" />
 
路径数据:
    M = moveto(开始描点)
    L = lineto(画线要到的位置)
    H = horizontal lineto(水平画线要到的位置)
    V = vertical lineto(垂直画线要到的位置)
    C = curveto(弯曲线弯角位置,包含多个坐标)
    S = smooth curveto(光滑曲线曲角位置,包含多个坐标)
    Q = quadratic Belzier curve(二次 Belzier曲线)
    T = smooth quadratic Belzier curveto(光滑二次Belzier曲线)
    A = elliptical Arc(椭圆弧)
    Z = closepath(关闭路径)
三、 渐变
SVG渐变必须在 标签中进行定义,渐变类型包括:线性渐变 和 放射性渐变
: 他可对诸如渐变之类的特殊元素进行定义

线性渐变(<linearGradient>标签):
1、水平渐变:y1 = y2, x1 != x2
2、垂直渐变:x1 =x2, y1 != y2
3、角形渐变:x1 != x2, y1 != y2
 

// 定义
<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="50" style="fill: url(#orange_red)" /> 
 

注解:
1、fill:url(#orange_red) 属性把ellipse元素链接到此渐变
2、标签的x1,x2,y1,y2属性定义渐变的开始和结束位置
3、 标签定义渐变颜色的组成部分,offset属性来定义渐变的开始和结束位置

放射性渐变(<radialGradient>标签):
 

// 定义
<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)"/>
注解:
1、cx,cy属性定义外圆
2、fx,fy属性定义内圆

滤镜
fe开头的元素都是滤镜,如下高斯模糊:
高斯模糊(<feGaussianBlur>标签)

// 定义
<defs>
    <filter id="Gaussian_Blur">
        <feGaussianBlur in="SourceGraphic" stdDeviation="3" />
    </filter>
</defs>
// 应用
<ellipse cx="200" cy="150" rx="70" ry="40"
    style="fill: #ff00; stroke: #0000; stroke-width: 2;
    filter: url(#Gaussian_Blur)"
/>
注解:
1、filter:url属性用来把元素链接到滤镜
2、stdDeviation:属性用于定义模糊程度
3、in=“SourceGraphic” 定义有整个图像创建效果

容器中常用元素
指在svg中经常使用的一些标签元素:

defs: 用来存储后续将要用到的图像,通过fill:url(id)进行引用
g: 用于对其他SVG元素进行分组容器,在其元素上设置属性和变换会影响g分组的所有元素
mask: 用于定义一个alpha通道,将当前对象合成到背景中
pattern: 定义一个填充对象,这个对象可在其寄宿元素内重复、平铺以沾满其元素
marker: 用于在给定的<path>、<line>、<polyline>或<polygon>元素上绘制箭头或多点标记的图形
symbol:定义一个模板元素,通过use属性引用
 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐