博得概况  多媒体简介  我们的服务  案例展示  联系方式  留言板 招贤纳士 | 设为首页 | E-MAIL
 

  如何使用SVG生成超酷的页面预加载素描动画效果 重庆动画公司http://www.cqredtime.com
 
1 SVG简介
  可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。
  2 SVG的特点
  与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:重庆动画制作http://www.cqredtime.com
  SVG 图像可通过文本编辑器来创建和修改
  SVG 图像可被搜索、索引、脚本化或压缩
  SVG 是可伸缩的
  SVG 图像可在任何的分辨率下被高质量地打印
  SVG 可在图像质量不下降的情况下被放大
  3 浏览器支持
  Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持内联 SVG。Internet Explorer 8或更早版本,重庆动画公司http://www.cqredtime.com 可通过安装Adobe SVG Viewer以支持SVG。
  4 SVG 标签
  SVG 代 码以 元素开始,包括开启标签 和关闭标签 。这是根元素。 width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定 义 SVG 命名空间。
  5 SVG 制作素描线动画举例
  1)首先画一条素描线 如图:
  

  
  素描线的参数可以使用工具生成,
  2)SVG实现素描的动画及原理
  stroke-dasharray = "100 10" stroke-dashoffset = "0"
  stroke-dasharray定义了生成线段长度,及其线段和线段之间的缝隙 ,这里包含两个参数
  stroke-dashoffset定义了从那个位置开始渲染生成线段
  3)使用CSS3来实现素描动画效果重庆动画制作http://www.cqredtime.com
  /*定义keyframe动画*/ /* 添加动画到path元素 */ .path{ stroke-dasharray: 265.07; stroke-dashoffset: 265.07; animation: dash 3s linear infinite; /* 支持chrome */ -webkit-animation: dash 3s linear infinite; } @keyframes dash{ from{ stroke-dashoffset: 265.07; /* 这里是svg图形中素描线长度,可以使用js获取 */ } to{ stroke-dashoffset: 0; } } /* 支持chrome浏览器 */ @-webkit-keyframes dash{ from{ stroke-dashoffset: 265.07; /* 这里是svg图形中素描线长度,可以使用js获取 */ } to{ stroke-dashoffset: 0; } }
  4)使用Javas cript来调节动画效果的参数重庆动画公司http://www.cqredtime.com
  /*定义相关Javas cript*/ var current_frame, //定义当前帧 total_frames, //定义全部帧数 path, //定义svg中的唯一path元素 length, //定义path所生成的素描长度 handle; //定义javas cript动画句柄 path = document.getElementById('path'), length = path.getTotalLength(); //定义初始化方法 var init = function(){ current_frame = 0; total_frames = 160; path.style.strokeDasharray = length + ' ' + length; //定义dasharray path.style.strokeDashoffset = length; //定义dashoffset handle = 0; } //定义实际的动画绘制方法 var draw = function(){ var progress = current_frame/total_frames; if(progress>1){ //这里定义完成动画 window.cancelAnimationFrame(handle); }else{//否则使用重庆动画制作http://www.cqredtime.com reqeuestAnimationFrame来生成动画 current_frame++; path.style.strokeDashoffset = Math.floor(length*(1 - progress)); handle = window.requestAnimationFrame(draw); } } //定义一个重新运行方法 var rerun = function(){ init(); draw(); } //页面加载即运行 rerun();
  这里主要定义初始化方法和动画绘制的方法,window.requestAnimationFrame(draw);
  来生成动画。
  5)我们选用极客标签的logo,作为原始图片,坐标参数用 Inkscape 工具生成。重庆动画公司http://www.cqredtime.com
  
  当运行动画绘制程序的时候,各条线安装设定的方式进行绘制,我们就看到非常酷的预加载动画了。

本文出处:重庆动画制作http://www.cqredtime.com
  2017-09-14


2012 WWW.CQREDTIME.COM All RIGHTS RESERVED.   E-MAIL:cqredtime@163.com
重 庆 博 得 文 化 传 媒 有 限 公 司 版 权 所 有
客户服务热线:86-023-68781096 13452883959 15320360086  客服QQ:3775303
地址:重庆市九龙坡区杨家坪四季花园2-20-15  www.cqredtime.com
重庆多媒体制作 重庆影视制作 电子楼书 FLASH动画 3D影视制作 虚拟现实 360度全景演示 产品演示