SVG简介1

文献种类:专题技术文献;

 SVG简介1

	开发工具与关键技术:VS/JavaScript
	
	撰写时间:2019年5月8日

SVG简介
    SVG指可伸缩矢量图形 (Scalable Vector Graphics);
    SVG是使用 XML 来描述二维图形和绘图程序的语言、是可伸缩的、是万维网联盟的标准、是开放的标准。
    SVG与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
    SVG文件是纯粹的 XML,可被非常多的工具读取和修改(比如记事本)
    SVG用来定义用于网络的基于矢量的图形,使用 XML 格式定义图形,
           图像在放大或改变尺寸的情况下其图形质量不会有所损失,
           图像可在任何的分辨率下被高质量地打印,图像中的文本是可选的,
           同时也是可搜索的(很适合制作地图);
    SVG与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体,可以与 Java 技术一起运行;

    SVG有一些预定义的形状元素,可被开发者使用和操作:
       矩形   <rect>        圆形   <circle>        椭圆   <ellipse>         线     <line>
       折线   <polyline>    多边形<polygon>       路径   <path>

在这里插入图片描述

  <rect>标签:可用来创建矩形,以及矩形的变种。

     例1:一个黑边深蓝色的矩形
    <svg  width="300"  height="100"  version="1.1"  xmlns="">
         <rect width="300"  height="100"  style="fill:rgb(0,0,255);
             stroke-width:2;  stroke:rgb(0,0,0)"/>
    </svg>
    解释:rect元素的 width 和 height 属性可定义矩形的高度和宽度 ;   style 属性用来定义 CSS 属性;
              CSS的 fill属性定义矩形的填充颜色(rgb 值、颜色名或者十六进制值) ;
              CSS的 stroke-width属性定义矩形边框的宽度 ;
              CSS的 stroke 属性定义矩形边框的颜色 ;

在这里插入图片描述

    例2:包含新属性:
    <svg width="300"  height="300"  version="1.1"  xmlns="">
         <rect  x="20"  y="20"  width="250"  height="250"  style="fill:blue;
                  stroke: #8e0404;  stroke-width:5;  fill-opacity:0.1;  stroke-opacity:0.5"/>
    </svg>
     解释:
            x属性定义矩形的左侧位置(例如,x="0"定义矩形到浏览器窗口左侧的距离是0px);
            y属性定义矩形的顶端位置(例如,y="0"定义矩形到浏览器窗口顶端的距离是 0px);
            CSS 的 fill-opacity属性定义填充颜色透明度(合法的范围是:0 - 1);
            CSS的 stroke-opacity属性定义笔触(即边上的线,也可以叫笔画)颜色的透明(合法的范围是:0 - 1);
            CSS的 opacity属性定义整个元素的透明值(合法的范围是:0 - 1)

在这里插入图片描述

    例3:带有圆角的矩形:
    <svg  width="300"  height="300"  version="1.1" xmlns="">
        <rect  x="20"  y="20"  rx="20"  ry="20"  width="250"
             Height="100"  style="fill:red; stroke:black; stroke-width:5;  opacity:0.5"/>
    </svg>
    解释:rx 和 ry属性可使矩形产生圆角,且如果同时使用,任意一边不能为零;可以单独使用;

在这里插入图片描述

   例:<circle>标签:可用来创建一个圆。
    <svg  width="100"  height="100"  version="1.1"  xmlns="">
               <circle  cx="100"  cy="50"  r="40" stroke="black"  stroke-width="2"  fill="red"/>
    </svg>
    解释:cx 和 cy 属性定义圆点的 x和 y坐标。如果省略 cx 和 cy,圆的中心会被设置为(0, 0);
         r属性定义圆的半径。

在这里插入图片描述

    <ellipse>标签可用来创建椭圆。椭圆与圆很相似。
         不同之处在于椭圆有不同的 x 和 y 半径,而圆的 x和 y半径是相同的。
    <svg  width="600"  height="300"  version="1.1"  xmlns=" ">
          <ellipsecx="210"cy="90"rx="200"ry="80"
                style="fill:rgb(200,100,50);  stroke:rgb(0,0,100);stroke-width:2"/>
    </svg>
    解释:cx属性定义圆点的 x 坐标 ;
               cy 属性定义圆点的 y 坐标 ;
               rx 属性定义水平半径 ;
               ry 属性定义垂直半径 ;

在这里插入图片描述

    例:三个累叠而上的椭圆:
        <svg width="100%"  height="100%"  version="1.1"  xmlns=" ">
            <ellipse  cx="240"  cy="100"  rx="220" ry="30"  style="fill:purple"/>
            <ellipse  cx="220"  cy="70"   rx="190"  ry="20"  style="fill:lime"/>
            <ellipse  cx="210"  cy="45"   rx="170"  ry="15"  style="fill:yellow"/>
       </svg>

在这里插入图片描述

   <line>标签:用来创建线条。
    <svg  width="100%"  height="100%"  version="1.1"  xmlns=" ">
        <line  x1="0"  y1="0"  x2="300"  y2="300"
              style="stroke:rgb(99,99,99);stroke-width:2"/>
    </svg>

    解释:x1属性在 x轴定义线条的开始; y1 属性在 y轴定义线条的开始;
               x2属性在 x轴定义线条的结束;  y2属性在 y轴定义线条的结束;

在这里插入图片描述

   <polygon>标签用来创建含有不少于三个边的图形。
    <svg width="210"  height="110"  version="1.1"  xmlns=" ">
         <polygon  points="200,10 30,100 50,20"style="fill:#ccc; stroke:#000; stroke-width:1"/>
    </svg>

在这里插入图片描述

    解释:points 属性定义多边形每个角的 x 和 y 坐标
    <svg  width="310"  height="300"  version="1.1"  xmlns="">
         <polygon  points="120,70300,210170,250 123,234"
                     style="fill:#ccc;  stroke:#000;  stroke-width:1"/>
    </svg>

    <polyline>标签:用来创建仅包含直线的形状。

在这里插入图片描述

      <svg  width="100"  height="100"  version="1.1"  xmlns=" ">
            <polyline  points="0,0 0,20 20,20 20,40 40,40 40,60"
                  style="fill:white;  stroke:red;  stroke-width:2"/>

    </svg>

   <path>标签用来定义路径。
    下面的命令可用于路径数据:
            A = elliptical Arc;   C = curveto;     H =horizontal lineto;   L = lineto;
            M = moveto;           Q = quadratic Belzier curve;               S =smooth curveto;
            T = smooth quadratic Belzier curveto;   V = vertical lineto;     Z = closepath;
    注释:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

在这里插入图片描述

    例:三角形:
        定义了一条路径,它开始于位置 250 150,到达位置 150 350,
        然后从那里开始到 350 350,最后在 250 150 关闭路径。
    <svg width="400"  height="400"  version="1.1"  xmlns=" ">
          <path  d="M250 150 L150 350 L350 350 Z"/>
    </svg>

在这里插入图片描述

    例:五边形

    <svg  xmlns=""  version="1.1"  height="190">
         <polygon  points="100,3 190,60 160,18040,180 10,60"
              style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;"/>
    </svg>

在这里插入图片描述

   例:<五角星☆>
   <svg  xmlns=""  version="1.1"  height="190">
        <polygon  points="100,10 40,180 190,6510,65 160,180"
                 style="fill:#dfdfdf;  stroke:purple;  stroke-width:5;  fill-rule:evenodd;"/>
    </svg>

在这里插入图片描述

    例:一个螺旋:
    <svg  style="position:absolute; top:-225px; left:-55px; width:260px;
              height:450px;"version="1.1" xmlns=" ">
       <pathd="M153 334
            C153 334 151 334 151 334            C151 339 153 344 156 344
            C164 344 171 339 171 334            C171 322 164 314 156 314
            C142 314 131 322 131 334            C131 350 142 364 156 364
            C175 364 191 350 191 334            C191 311 175 294 156 294
            C131 294 111 311 111 334            C111 361 131 384 156 384
            C186 384 211 361 211 334            C211 300 186 274 156 274"
                  style="fill:white;  stroke:red; stroke-width:2;  position:relative;"/>
    </svg>

    SVG 滤镜:用来向形状和文本添加特殊的效果。
    可用的滤镜有:
         feColorMatrix ;    feImage ;   feConvolveMatrix ;   feBlend ;   feGaussianBlur ;
         feOffset ;         feMerge;   feComposite ;        feTile ;    feDisplacementMap ;
         feDistantLight ;   feFlood ;   fePointLight ;       feTurbulence ;    feSpotLight ;
         feDiffuseLighting ;    feMorphology ;     feComponentTransfer ;      feSpecularLighting ;
    注释:可以在每个 SVG 元素上使用多个滤镜!

借鉴于老师上课文档与W3Cchool

猜你喜欢

转载自blog.csdn.net/weixin_44540155/article/details/89924439
SVG