GreenSock (TweenMax) 动画案例(二)

实现效果

clipboard.png

动画分解

1.灯光闪烁
2.文字出现
3.水流
4.心电图

知识点

1.AI(可尽情骚扰UI欧巴)
2.SVG(了解基本的知识点)
3.TweenMax(GreenSock)
4.CSS animation

写在前面

写过第一篇文章后GreenSock (TweenMax) 动画案例(一)再回头看发现代码太多,根本没耐心去看完。所以每一个动画效果这次都尽量分开详细的写出来,看的时候不会太乱。涉及到的知识点和自己遇到的坑也尽量提出来,能够让大家不走弯路。AI操作这里就不再赘述了,在GreenSock (TweenMax) 动画案例(一)中有说到AI转svg文件。这里先抛出一个问题,关于SVG animation运动,也就是路径动画如何实现,以及如何兼容IE,可以看一下解决SVG animation 在IE中不起作用。

1.灯光闪烁

设置初始透明度为0

<style>
#lightning{opacity:0;
}
</style>
  var light = $("#lightning");function sceneOne() {var tl = new TimelineMax();//实现闪烁tl.to(light, 0.5, {opacity: 1,//闪电闪三次,这里repeat:2个人认为var master = new TimelineMax({repeat: -1});//重复第一次的时候,tl.to(light, 0.5, { opacity: 1,repeat: 2,});里重复两遍,共三遍 repeat: 2, //闪电闪三次});tl.to(light, 0.25, {opacity: 0});//闪烁消失}var master = new TimelineMax({repeat: -1});//重复整个场景动画master.add(sceneOne(), "scene1");

2.文字出现

文字显示在闪烁之后,所以直接添加到上文的tl.to(light, 0.25, {opacity: 0});//闪烁消失之后就可以了。初始状态透明度为0

<style>
#text{opacity:0;
}
</style>
   tl.to(text, 2, {opacity: 1});//闪烁完成后显示tl.to(text, 1, {opacity: 0});//随即消失

这里有个问题研究了很久,就是透明度0->1->0的过程,使用tl.fromTo()(text, 2, {opacity: 1},{opacity: 0});画面一进入text就显示,没有在三秒后才显示即使CSS设置了opacity:0。只能使用两个to方法实现,希望能得到高手的帮助。

3.水流

水流动画涉及到了CSS animation,水流动的时候涉及到了四条路径,我们先研究一条路径,路径包括两个属性,stroke-dasharray的值:223表示穿过水管的水的长度,1000表示尽量长的一段空白,stroke-dashoffset: 223;在这里表示水一开始的偏移量,animation就不在讲解了, to{stroke-dashoffset: -1000; }动画移动到的终点位置,就是让整个水流向前进了1000,这里的负号涉及到了水流的方向。四段水流都是这种方式来移动。画个图就好设置参数了,画了个惨不忍睹的图来理一下思路。

clipboard.png

 #path {stroke-dasharray: 223,1000;//路径虚实显示方式stroke-dashoffset: 223;  //初始偏移位置animation: dash 10s linear  5s  infinite; //执行动画,后面的5s是延迟执行,因为是右侧水管,所以要延迟5s 
} @keyframes dash {to{stroke-dashoffset: -1000; }
}  

兼容其他浏览器代码


svg #path {stroke-dasharray: 223, 1000;stroke-dashoffset: 223;animation: dash 10s linear 5s infinite;-moz-animation: dash 10s linear 5s infinite;-webkit-animation: dash 10s linear 5s infinite;
}@keyframes dash {to {stroke-dashoffset: -1000;}
}@-moz-keyframes dash {to {stroke-dashoffset: -1000;}
}@-webkit-keyframes dash {to {stroke-dashoffset: -1000;}
}@-o-keyframes dash {to {stroke-dashoffset: -1000;}
}

其他三个水管也是相同的方法进行设置,都设置完毕效果如下,路径长度可以使用snap.svg-min.js的getTotalLength()方法获取长度,完整代码js部分有详细的获取方式。
完整效果
水流效果基本完成,这个效果没办法在IE里好好运动,是整个代码的鸡肋。接下来就是兼容IE所有版本了。
animateRoute(path, 457, -766, -1);
这里的参数457和-766是开始,结束位置的偏移量。这里为了让他有延迟的效果,起始位置加了234,这个长度是左侧水管流过来的距离,相应的终点位置-1000+234=-766,-1的绝对值越大速度越快,负号代表方向。其他几个水流也是相同的方法,这里涉及到不同水管的流动起始位置,数值需要算一下。
IE效果
这里对svg代码做了小的改动。stroke-width="10"的值改成了6,让动画能流畅显示出来,到此水流的效果基本实现

var path = document.querySelector('#path');animateRoute(path, 457, -766, -1);/*
* ele  //路径对象
* offset //初始偏移位置
* end    //结束位置
* speed  //速度(正负表示方向)
*/
function animateRoute(ele, offset, end, speed) {if (!isIE())return;var _offset = offset;var offsetMe = function () {if (speed < 0) {if (offset < end) offset = _offset;} else {if (offset > end) offset = _offset;}ele.style.strokeDashoffset = offset;offset = offset + speed;requestAnimationFrame(offsetMe);}offsetMe();
}function isIE() { //ie?if (!!window.ActiveXObject || "ActiveXObject" in window)return true;elsereturn false;
}
    var path = document.querySelector('#path');var path1 = document.querySelector('#path1');var path2 = document.querySelector('#path2');var path3 = document.querySelector('#path3');animateRoute(path, 457, -766, -1);animateRoute(path1, 457, -766, -1);animateRoute(path2, -234, 1000, 1);animateRoute(path3, -234, 1000, 1);

2017.09.07更新~
未编辑完~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无限轮播图片的实现原理

无限轮播图相信是很多开发人员常用的一个功能&#xff0c;这里总结一下常用的两种方式的实现原理 一、使用UIScrollview实现无限轮播用UIScrollView实现&#xff0c;在scrollView上添加3个UIImageView&#xff0c;分别用来显示上一张图片&#xff0c;当前显示的图片&#xff0c…

开启 JM 的 trace 功能

[JM代码] 开启 JM 的 trace 功能本帖最后由 firstime 于 2009-6-15 11:16 AM 编辑 城里汉子说过&#xff1a; trace文件对分析码流结构很有效。我说的是trace文件&#xff0c;不是一步一步跟踪&#xff0c;就是编解码同时生成的 trace_enc.txt 这个文件&#xff0c;里面对每个比…

kafka入门介绍(转载)

Kafka作为一个分布式的流平台&#xff0c;这到底意味着什么&#xff1f; 我们认为&#xff0c;一个流处理平台具有三个关键能力&#xff1a; 发布和订阅消息&#xff08;流&#xff09;&#xff0c;在这方面&#xff0c;它类似于一个消息队列或企业消息系统。 以容错的方式存储…

Cmd Markdown 编辑阅读器

欢迎使用 Cmd Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想&#xff0c;整理笔记、知识&#xff0c;并将其中承载的价值传播给他人&#xff0c;Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown&…

Ubuntu GitLab CI Docker ASP.NET Core 2.0 自动化发布和部署(1)

相关博文&#xff1a; Ubuntu 简单安装和配置 GitLabUbuntu 简单安装 DockerUbuntu Docker 简单安装 GitLabUbuntu Docker 安装和配置 GitLab CI 持续集成服务器版本 Ubuntu 16.04 LTS。 经过上面四篇博文中的相关安装和配置&#xff0c;我们主要完成了两个容器的创建和运行&am…

django-ckeditor表情包修改

一、版本 Django1.11django-ckeditor5.2.2 二、关键步骤 1.删除旧的ckeditor静态文件 所在目录&#xff1a;项目目录下的static文件夹下的ckditor文件夹 rm ckeditor -rf 原因&#xff1a;在安装ckeditor后需要执行collectstatic命令&#xff0c;这个过程中的查找静态文件会去…

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.2.2 如何读入文本输入

2.2.2 如何读入文本输入 最简单的处理任意文本的方式就是使用在卷Ⅰ中我们广泛使用的Scanner类。我们可以从任何输入流中构建Scanner对象。或者&#xff0c;我们也可以将短小的文本文件像下面这样读入到一个字符串中&#xff1a; 在早期的Java版本中&#xff0c;处理文本输入的…

amap不同样式marker点_想出一手漂亮的图,CAD打印样式表你必须会!

好课推荐&#xff1a;1.CAD2014&#xff1a;点击查看2.室内CAD&#xff1a;点击查看3.CAD2019&#xff1a;点击查看4.CAD2018&#xff1a;点击查看5.【bim】revit&#xff1a;点击查看6.室内手绘&#xff1a;点击查看7.CAD三维&#xff1a;点击查看8.全屋定制&#xff1a;点击查…

研究人员发现Office Word 0Day攻击 这个漏洞绕过了word宏安全设置 绿盟科技、McAfee及FireEye发出警告...

这次的0Day漏洞确实很厉害&#xff0c;以往攻击者诱使用户点击Word文档&#xff0c;由于其中包含了恶意脚本&#xff0c;大多数需要用户启用了宏。但这次的漏洞不是&#xff0c;受害者无需启用宏&#xff0c;也会中招&#xff0c;而且漏洞覆盖Windows所有版本&#xff08;包括W…

数据中心传输需求成以太网市场巨大推动力

近日&#xff0c;市场研究机构Infonetics作出评估称&#xff0c;数据中心以太网市场将迎来全面发展的势头&#xff0c;其驱动力则在于当前数据中心以太网络交换接口由10Gbps产品向25Gbps乃至50Gbps标准的大规模升级。 根据对2014年第三季度的市场销售情况研究&#xff0c;该公司…

主打“云安全” 迅雷系帝恩思登陆新三板

ZD至顶网安全频道 06月14日 综合消息&#xff1a; 6月14日上午&#xff0c;帝恩思(837018)敲响了登陆新三板的钟声。作为帝恩思的重要股东&#xff0c;迅雷&#xff08;NASDAQ:XNET&#xff09;CEO邹胜龙与帝恩斯董事长王宇杰、总经理许渊培等人一同参加了这一仪式。 帝恩斯是一…

UESTC 1636 梦后楼台高锁,酒醒帘幕低垂

题意&#xff1a;求一条路径&#xff0c;使得这条边连接1到n&#xff0c;求边权值的最大值与最小值的差 题解&#xff1a;最小生成树&#xff0c;对边权排序&#xff0c;可以枚举边的最大和最小的值&#xff0c;判断能否使得1和n连通 #include <bits/stdc.h> #define ll …

WORD列表缩进的文本起始点

Figure 1 Figure 2 Figure 3 编号位置以刻度尺为起点0.74厘米&#xff08;2个字符间距&#xff09;&#xff0c;文本缩进以刻度尺为起点2.96厘米&#xff08;8个字符间距&#xff09; 以上两者相减得到的值正好特殊格式悬挂缩进的值2.22厘米 Figure 4 上图看到&#xff0c;文本…

无人车火了 百度是如何做到的?

ZD至顶网服务器频道 03月02日 新闻消息&#xff08;文/于泽&#xff09;&#xff1a;百度无人车可谓狠狠的吸足了大众的眼球。一个问题逐渐出现在我们心中&#xff0c;为什么百度这样的互联网企业会推出无人车&#xff0c;似乎搜索引擎和无人车之间的关联度并不是很高。 谜题的…

Docker Compose 项目

二、Docker Compose 项目compose项目简介compose项目来源于之前的Fig项目&#xff0c;使用python代码编写。compose项目主要用于编排部署基于docker的应用。本身与docker&#xff0f;swarm配合度很高。Docker Compose 是 Docker 编排服务的一部分&#xff0c;可以让用户在其它平…

android 获取sd卡目录失败_树莓派对SD卡的大小,速度有哪些要求?

SD卡容量的大小通过NOOBS安装带有桌面和推荐软件&#xff08;完整&#xff09;的 Raspberry Pi OS&#xff0c;SD卡最小为16GB。 对于带有桌面和推荐软件的 Raspberry Pi OS 镜像安装&#xff0c;SD卡最小为8GB。对于安装 Raspberry Pi OS Lite&#xff0c;建议 SD 卡最小为4GB…

区分同源与非同源

2019独角兽企业重金招聘Python工程师标准>>> JSONP和AJAX相同&#xff0c;都是客户端向服务器端发送请求&#xff1a;1、给服务器端传递内容2、从服务器端获取数据 的方式 AJAX属于同源策略 JSONP属于非同源策略(跨域请求) -> 实现跨域请求的方式有很多种&#x…

Spring MVC-表单(Form)标签-下拉框(Dropdown)示例(转载实践)

以下内容翻译自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_dropdown.htm 说明&#xff1a;示例基于Spring MVC 4.1.6。 以下示例显示如何使用Spring Web MVC框架在表单中使用Dropdown。首先&#xff0c;让我们使用Eclipse IDE&#xff0c;并按照以下步骤…

阿里巴巴中文站架构设计实践(何崚)图书

阿里巴巴中文站架构实践 何崚阿里巴巴 全文地址:阿里巴巴中文站架构设计实践(何崚).pdf 更多课件可到:这里查看 后续内容还在更新…