美文网首页
H5中SVG的使用

H5中SVG的使用

作者: 云音流 | 来源:发表于2016-12-18 18:16 被阅读0次

一、 SVG — 可缩放矢量图形

1、 什么是SVG

  • SVG是一种使用XML技术描述二维图形的语言,svg是一种矢量图

  • 并不属于HTML5专有内容,在HTML5出现之前,就有SVG内容,HTML5只不过提供了SVG原生的内容

  • svg文件的扩展名为.svg

2、 SVG的优势

  • 可通过文本编辑器来创建和修改
  • 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
  • SVG可在任何的分辨率下被高质量的打印
  • 可在图片质量不下降的情况下被放大
  • SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
  • 支持事件绑定
  • SVG 可以与 Java 技术一起运行
  • SVG 是开放的标准
  • SVG 文件是纯粹的 XML

3、 SVG与canvas的区别

  • SVG - 实际开发中,多用SVG

      不依赖分辨率   
      支持事件处理器   
      不适合游戏   
      大型渲染区域的程序(例如,百度地图)
    
  • Canvas

      依赖分辨率   
      不支持事件绑定    
      最适合网页游戏   
      可以用图片格式保存图像 
    

不是是SVG还是Canvas,在一个页面中都可以同时定义多个

4、用途



静态绘制图形
动态动画效果
专门提供事件

二、SVG — 绘制图形

1、创建SVG元素 <svg> </svg>
类似于canvas元素,可在元素内写 width=" " height=" "
但可以使用css样式
使用svg绘制图形,必须定义在svg元素中
2、画矩形 —— 创建矩形元素
<rect x="100" y="100" width="200" height="150" fill="blue" stroke="red" stroke-width="5"> </rect>

如果使用style属性来设置他的样式,例如设置背景颜色style="background:red"是不行的,要使用style="fill:red"
3、画圆形 —— 创建圆形元素
<circle cx="50" cy="50" r="50"></circle>
4、画椭圆形 —— 创建椭圆元素
<ellipse cx="" cy="" rx="" ry="">

cx 属性定义原点的 x 坐标
cy 属性定义原点的 y 坐标
rx 属性定义水平半径
ry 属性定义垂直半径
ry = rx 画出来的就是一个圆
5、 画直线 —— 创建直线元素

颜色必须得加

<line x1=" " y1=" " x2=" " y2=" " stroke-width=" " stroke=" ">
填上对应的数值
6、 画折线 —— 创建折线元素
points - 设置起点 折点及重点,x和y用逗号分隔,多个折点用空格隔开

会默认将折线中的区域(起点到终点),默认提供黑色,将fill设置为canvas的颜色,将stroke设置为另一种颜色

<polyline points=" " stroke=" " fill=" "></polyline> //最后的连接点无法完整的连接
7、 画多边形 —— 多边形元素
//不用考虑折点的显示问题
<polygon points="">

*例子 *

<svg id="" style="width:400px;height:400px;background-color:yellow;">
    <rect x="150" y="150" width="100" height="100" fill="red" stroke="black" stroke-width="5px"></rect>
    <circle cx="80" cy="80" r="50" fill="red"></circle>
    <ellipse cx="90" cy="300" rx="90" ry="50"></ellipse>
    <line x1="10" y1="10" x2="200" y2="200" stroke-width="2" stroke="white" ></line>        
    <polyline points="100,20 300,70 200,300 100,20" stroke="#e4393c" fill="yellow"></polyline>
    <!--     line只能设置一次    -->
    <!--<line x1="280" y1="200" x2="300" y2="100" stroke-width="2" stroke="white">-->
</svg>
<script type="text/javascript">
    var rect=document.querySelector("svg rect");
    //无法通过js修改属性
    console.info(rect.width);
</script>

三、SVG — 渐变

1、 线性渐变步骤
  • 首先在html里面创建SVG元素

        <svg></svg>
    
  • 然后在svg里追加defs元素

        <svg>
           <defs></defs>
        </svg>
    
  • 在defs里追加linearGradient元素,他才是真正实现渐变的元素

      <svg>
        <defs>            
          <linearGradient x1="" y1="" x2="" y2=""></linearGradient>            
        </defs>
      </svg>
      
      //x1、y1:起点坐标值
      //x2、y2:终点坐标值
      
      //注意: 这四个值都是百分比
    
  • 在linearGradient里面追加stop元素,stop元素真正设置渐变颜色

      <svg>
       <defs>
         <linearGradient>              
            <stop offset="" stop-color="" stop-opacity="">
            <stop offset="" stop-color="">        
         </linearGradient>
       </defs>
      </svg>
      
     // offset: 值为百分比
     // stop-color:设置渐变颜色
     // stop-opacity:设置渐变颜色的透明度
    
  • 在defs下面追加<rect>,画出图形,并将上面设置的线性渐变,添加到矩形中

      //使用fill属性,值为url(#渐变元素的id值)
      
      <rect x="0" y="0" width="400" height="400" fill="url(#def)">
    

2、 扇形渐变radialGradient,参考线性渐变

四、SVG — 高斯模糊效果



看下面代码

 <svg width="500" height="500"> 
   <defs> 
      <filter id="Gaussian_Blur"> 

            //fegaussianblur- 高斯模糊,stdDeviation - 设置模糊程度 
            <feGaussianBlur in="SourceGraphic" stdDeviation="3" /> 

      </filter>
   </defs>
   <rect x="0" y="0" width="400" height="400" filter="url(#def)">
 </svg>

 <!-- 滤镜使用filter元素   
      in="SourceGraphic" - 固定写法
 -->

效果

  • 更改 stdDeviation元素的值,会产生相应的效果
  • 设置为负数 无效 会默认为 0
  • 可以试试不断增加 stdDeviation元素的值,看它怎么变化的

相关文章

  • H5中SVG的使用

    一、 SVG — 可缩放矢量图形 1、 什么是SVG SVG是一种使用XML技术描述二维图形的语言,svg是一种矢...

  • HTML5新增API

    SVG 定义 矢量图工具, 绘图SVG在H5标准之前就有了, IE对SVG的兼容性非常好 svg与canvas区别...

  • SVG矢量图

    SVG 定义 矢量图工具, 绘图SVG在H5标准之前就有了, IE对SVG的兼容性非常好 svg与canvas区别...

  • [整理]SVG Path Animations

    SVG描边动画,使用了SVG图形中PATH标签的stroke特性制作的动画。 为什么使用SVG? 相对于其他的图片...

  • H5中的SVG

    一、什么是SVG? 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格...

  • canvas和svg的区别

    SVG SVG 是一种使用 XML 描述 2D 图形的语言。 SVG 基于 XML,这意味着 SVG DOM 中的...

  • HTML 5 Canvas vs. SVG

    1.SVG SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中...

  • CANVAS与SVG

    原文 SVG使用XML描述2D图形。canvas使用js描绘2D图形。SVG基于XML意味着SVG DOM中每个元...

  • 2018-11-15

    svg SVG 在HTML页面中怎样使用? (1)使用 标签 : 优势:所有主要浏览器都支持,并允许使用脚本 ...

  • 碎片化时间(1)----tagName

    tagName svg 在XML中有一个 svg ,所以 使用 qieryselect 得到的是XMO 中的 ...

网友评论

      本文标题:H5中SVG的使用

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