`
jacally
  • 浏览: 770120 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SVG 入门教程(七) 动画与交互

    博客分类:
  • SVG
阅读更多
控制属性 <nobr>第 1 页(共2 页)</nobr>


即使在 SVG 产生以前,动画和交互性已经在 Web 上确立了牢固的地位。尽管实现可能较复杂,但是概念很简单:更改对象属性值,对象本身看起来就会改变。例如,给 x 坐标增加 50 个像素,对象就会向右移动 50 个像素。

SVG 图像具有相同的概念,但实现却简单得多,这是由于这些能力从开始就构建到语言中。SVG 定义了专用于动画的五种元素:

animate:该元素指定一个特定属性(通过 attributeName 属性),其值在 dur 属性指定的时间内从指定为 from 属性的值变成指定为 to 属性的值。repeatCount 属性指定动画发生多少次。要使动画无限运行,请将 repeatCount 的值设置为 indefinite。动画适用于包含它的元素,因此下面的代码:

xml 代码
  1. <rect x="50" y="50" width="100" height="100"    
  2.                           fill="none" stroke="purple">  
  3.     <animate attributeType="CSS" attributeName="stroke-width"    
  4.         from="1" to="50" dur="5s" repeatCount="indefinite" />  
  5.  rect>  

创建一个正方形,其 stroke-width 逐渐增厚到 50 像素,然后变回到 1 个像素,并再次开始循环。

animateMotion:该元素提供一种通过指定路径移动元素的简单方法。路径数据与路径元素的 d 属性相同,但用路径元素指定。也可以用 xlink:href 将它链接到 animateMotion 元素。起点和终点由 fromto 属性确定,并且可以通过将 rotate 值设为 auto 来设置对象垂直对齐于路径。(也可以将 rotate 属性设为 auto-reverse 以将这个方位改变 180 度。或者可以给定一个特定角度)。如动画和交互性所示:

xml 代码
  1. <animateMotion path="M0,300 S150,100 200,200 S400,400 500,0"    
  2.               dur="8s" repeatCount="indefinite" rotate="auto" />            
  3.   
  4. animateColor:该元素提供在一段时间内更改元素颜色的方法。例如,要创建一个在 8 秒钟内由红色变成蓝色的圆:   
  5.   
  6.   <circle cx="250" cy="100" r="50" fill="red">  
  7.      <animateColor attributeType="CSS" attributeName="fill"  
  8.          from="rgb(255,0,0)" to="rgb(0,0,255)" dur="8s"  
  9.          repeatCount="indefinite"/>  
  10.   circle>    
  11. animateTransform:该元素在一段时间内执行变换。请记住,这些变换影响整个坐标系统,因此简单地缩放一个矩形还会导致矩形位置的变化。下面的示例不但缩放矩形,还逐渐将它返回到类似位置:

       
          <animatetransform fill="freeze" to="3" type="scale" from="1" begin="3s" additive="sum" dur="6s" attributetype="XML" attributename="transform"></animatetransform>
          <animatetransform fill="freeze" to="-222,-45" type="translate" from="0,0" begin="3s" additive="sum" dur="6s" attributetype="XML" attributename="transform"></animatetransform>
      
    
    

    set:剩下的这个元素可以很容易地设置一个元素在指定时间段内的特殊属性。例如:

    
        
    
    
          
  12.   

 

 

事件的脚本编制 <nobr>第 2 页(共2 页)</nobr>


象 HTML 页面一样,可以设置 SVG 图像以捕获某些事件(如点击鼠标和滚动),并用它们启动脚本。在构建简单 SVG 图像时,可以通过属性捕获这些事件。最常用的是 onclickonactivateonmousedownonmouseuponmouseoveronmousemoveonmouseoutonloadonresizeonunloadonrepeat

当这些事件之一被触发,就可以将事件对象本身提供给脚本,脚本反过来再用它确定哪个对象触发了该事件(也就是点击了什么对象)。然后脚本可以操纵那个对象的特性,如它的属性。

这一示例回到了图案示例,但在此例中,当用户点击椭圆时,其填充由白色变为使用图案。

xml 代码
  1. <!---->xml version="1.0" standalone="no"?>  
  2. <!---->
  3.   "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">  
  4. <svg width="500" height="300" xmlns="http://www.w3.org/2000/svg">  
  5.   <desc>Scripting the onclick eventdesc>  
  6.   <defs>  
  7.      
  8.     <script type="text/ecmascript">    
  9.     <!----> 
  10.       function hideReveal(evt) {  
  11.         var imageTarget = evt.target;  
  12.         var theFill = imageTarget.getAttribute("fill");  
  13.         if (theFill == 'white')  
  14.           imageTarget.setAttribute("fill", "url(#notes)");  
  15.         else  
  16.           imageTarget.setAttribute("fill", "white");  
  17.       }  
  18.     ]]>    
  19.     script>  
  20.        
  21.     <pattern id="notes" x="0" y="0" width="50" height="75"    
  22.                    patternTransform="rotate(15)"    
  23.                    patternUnits="userSpaceOnUse">  
  24.             
  25.          <ellipse cx="10" cy="30" rx="10" ry="5"/>  
  26.          <line x1="20" y1="30" x2="20" y2="0"    
  27.                    stroke-width="3" stroke="black"/>  
  28.          <line x1="20" y1="0" x2="30" y2="5"    
  29.                    stroke-width="3" stroke="black"/>  
  30.          
  31.      pattern>  
  32.    defs>  
  33.   
  34.   <!---->  
  35.   <rect x="1" y="1" width="350" height="200" fill="none" stroke="blue"/>  
  36.   
  37.   <ellipse onclick="hideReveal(evt)" cx="175" cy="100" rx="125" ry="60"    
  38.            fill="url(#notes)" stroke="black" stroke-width="5"/>  
  39.   
  40.   
  41. svg>  
  42.   
  43.   
分享到:
评论

相关推荐

    SVG经典教程1 (SVG从入门到精通)

    8. 动画与交互:SVG支持内置的动画效果,如 `&lt;animate&gt;` 和 `&lt;animateTransform&gt;` 元素,以及事件监听器,让图形具有动态性和交互性。 9. SVG与HTML的集成:介绍如何在HTML文档中嵌入SVG,包括`&lt;svg&gt;`标签的使用,...

    SVG经典教程2 (SVG从入门到精通)

    **SVG(Scalable Vector Graphics)**是一种基于XML的矢量图像格式,广泛应用于网页设计、移动应用和图形用户界面...这个教程的下册可能涵盖更多高级主题,包括复杂的图形绘制、动画制作以及与CSS和JavaScript的交互。

    SVG经典入门(SVG应用指南) 完整带目录

    此外,SVG还支持丰富的交互性,允许用户在SVG图像上执行各种操作,如动画、脚本和事件处理。 SVG的特点主要包含以下几个方面: 1. 基于XML标准:SVG图像的代码是基于可扩展标记语言XML,这意味着SVG文件不仅可以由...

    SVG 入门教程(一) 基本形状

    在这个SVG入门教程的第一部分,我们将探讨SVG的基本形状。 SVG图像由一系列几何形状构成,包括矩形、圆形、椭圆、线条、多边形和路径等。这些形状可以通过SVG的XML语法来定义。下面我们将逐一详细介绍这些基本形状...

    svg入门pdf文档

    ### SVG入门PDF文档知识点梳理 #### 一、SVG简介 - **定义**:SVG(Scalable Vector Graphics)是一种基于XML的语言,用于描述二维矢量图形。它由W3C组织制定并维护,当前版本为1.1。 - **特点**: - 可缩放性:...

    SVG 入门教程(二) 定义和组

    在本篇SVG(可缩放矢量图形)入门教程中,我们将深入理解SVG的基本概念,以及如何使用定义和组来优化SVG元素的管理和组织。SVG是一种基于XML的图像格式,它允许我们创建清晰、可缩放的图形,无论放大多少倍都不会...

    WorkFlow SVG 入门与提高

    ### SVG技术入门与提高 #### 一、SVG技术概述 **SVG**,全称为 **Scalable Vector Graphics**,即 **可伸缩矢量图形**,是由W3C(World Wide Web Consortium)在2000年发布的一种开放标准文本式矢量图形描述语言。...

    svg经典入门书籍.pdf

    5. **SVG动画**:介绍`&lt;animate&gt;`元素和其他动画技术,以及如何实现时间线和交互式动画。 6. **SVG与HTML的集成**:讲解如何在HTML文档中嵌入SVG,以及如何利用JavaScript进行交互。 7. **SVG优化与性能**:讨论如何...

    svg初级教程(入门)

    6. **动画和交互性**:SVG支持SMIL(Synchronized Multimedia Integration Language)和其他JavaScript库,可以创建出具有动态效果和用户交互的图形,增强用户体验。 7. **动态创建图形**:开发者可以通过...

    HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用

    SVG拥有良好的用户交互性:SVG能响应大部分的DOM2事件,SVG能通过cursor良好的捕捉用户鼠标的移动等等,感兴趣的朋友可以了解下啊,或许本文对你学习动画有所帮助

    用于vue引入SVG入门的学习材料

    8. **CSS与SVG结合**:利用CSS可以实现SVG的动画效果,如变换、过渡和关键帧动画。此外,CSS还可以用来控制SVG的填充色、描边宽度等属性,实现图形的动态变化。 通过上述方法,你可以在Vue项目中灵活地引入和管理...

    SVG快速入门简介文档

    SVG与CSS的结合** SVG可以内联嵌入HTML文档,也可以作为外部资源引用。通过CSS,我们可以对SVG元素应用样式,如改变颜色、添加阴影、渐变等。此外,CSS还允许我们控制SVG的布局和响应式设计。 **5. SVG的工具和库*...

    SVG基础入门教材(doc版)

    学习SVG基础入门,不仅能够理解基本的图形绘制,还能掌握如何创建交互式和动态图形,这对于Web开发者和设计师来说是一项重要的技能。通过实践和探索,可以深入理解和应用SVG的各种特性和技巧,提升作品的质量和专业...

    SVG入门资料

    7. **动画**:SVG支持两种类型的动画:基于时间的关键帧动画(`&lt;animate&gt;`和`&lt;animateTransform&gt;`)和事件驱动的动画(`&lt;set&gt;`)。这些元素可以改变图形的属性,如位置、大小、颜色等,实现动态效果。 8. **组合与...

    SVG教程中文版

    SVG入门实例通常从学习基本的SVG元素开始。SVG的基本形状元素包括矩形()、圆形()、椭圆()、线条()、折线()、多边形()和路径()。这些元素各自拥有独特的属性,用于定义形状的细节,如尺寸、位置、颜色...

    SVG教程

    - **动画与脚本**:SVG支持内置动画和JavaScript控制,允许图形动态变化,增强用户交互体验。 #### 结语 **SVG**作为一种强大的图形描述语言,为Web开发提供了无限的可能性。从简单的图标到复杂的数据可视化,SVG...

    HTML SVG绘图.zip_zip压缩包

    SVG与Canvas各有适用场景,SVG适合静态或轻度动画的图形,Canvas则适合高度动态和复杂的动画。在某些情况下,两者可以结合使用,比如使用SVG进行图形布局和基本形状,然后利用Canvas进行动态效果。 压缩包内的文件...

    SVG学习资料,SVG相关软件汇总找资料

    4. **动画**:SVG支持通过SMIL(Synchronized Multimedia Integration Language)进行动画制作,也可结合JavaScript实现更复杂的交互效果。 5. **浏览器支持**:大部分现代浏览器都原生支持SVG,无需额外插件。 **...

    svg开发实践PDF电子书

    这份“SVG开发实践”PDF电子书是一本非常适合初学者入门SVG技术的教程。它涵盖了SVG的基本概念、语法以及在实际项目中的应用。 在SVG中,图像由几何形状(如直线、曲线、圆、椭圆等)组成,这些形状可以被无限放大...

Global site tag (gtag.js) - Google Analytics