js动画之链式运动
链式运动就是当一个运动完,又启动另外一个运动,这个怎么实现呢?这里我们是用用回调函数实现一套链式动画
显示给div左移100像素,然后然后透明度变100
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>链式运动</title>
<style>
.animation{
background-color: green;
height: 200px;
width: 200px;
position: absolute;
opacity: 0.3;
left:0px;
filter:alpha(opacity:30);
}
</style>
</head>
<body>
<div id="test" class="animation" ></div>
</body>
<script type="text/javascript">
window.onload = function(){
var ele = document.getElementById("test"),
timer = null;
//alert(getStyle(ele,'opacity'))
ele.onmouseover = function(){
startAnimation(ele,'left',100,function(){
startAnimation(ele,'opacity',100);
}); } function startAnimation(node,attr,target,fn){
//1.清空定时器
clearInterval(timer);
//2.重新生成一个定时器
timer = setInterval(function(){
var _currentAttrValue = null
if(attr == 'opacity'){
_currentAttrValue = Math.round(parseFloat(getStyle(node,attr))*100);
}else{
_currentAttrValue = parseInt(getStyle(node,attr));
}
//3.当对应的属性到达了目标想要的属性,那么就清除定时器,并调用回调函数
if(_currentAttrValue == target){
clearInterval(timer);
if(fn){
fn();
}
}else{
_currentAttrValue ++ ;
if(attr == 'opacity'){
node.style[attr] = _currentAttrValue/100;
node.style.filter = 'alpha(opacity:'+_currentAttrValue+')';
}else{
console.log(_currentAttrValue);
node.style[attr] = _currentAttrValue+'px';
} } },10)
} function getStyle(ele,attr){ if(window.getComputedStyle){
return getComputedStyle(ele,null)[attr];
}else{
return ele.currentStyle[attr];
} } }
</script>
</html>
大家可以看看效果
js动画之链式运动的更多相关文章
- js动画--链式运动
前面几节我们只是讲述了一种运动,这节课我将讲述链式运动:就以一个动作接着一个动作完成. 对于这个实现,我们只需要改变一下就可以实现了,设置一个回调函数. var timer; window.onloa ...
- JS之链式运动,及任意值运动框架,包括透明度的改变
链式运动,顾名思义,一环扣一环,即执行完一个事件后,再接着执行下一个事件,在参数上面动手脚,将下一个要执行的函数名作为一个参数,即利用到回掉函数,下面代码中出现的fn,即回掉函数, function ...
- (43)JS运动之链式运动框架
链式运动框架就是一系列的运动分阶段进行,在普通的运动框架上加上一个參数function,这个function表示下一个要运行的动作.详细代码例如以下: <!DOCTYPE HTML> &l ...
- js动画之简单运动一
虽然现在css3已经有了很多动画效果希望后面有时间也写一些博客,但是先开始我们的基础动画的学习. 1.制作动画常用的属性就是left,right,height,width,opacity等属性 2.因 ...
- js动画---多物体运动
对于多物体运动和单个物体运动来说,没有特别大的区别,实现原理基本上是一样的,都是通过定时器来实现的,但是多物体有一些地方需要注意,具体哪些需要注意,我将在下面的程序中说明. 首先,我们需要建立几个li ...
- js动画之缓冲运动
缓冲运动就是运动的速度与时间或者距离有关联,不是一般的匀速运动 <!DOCTYPE html> <html lang="en"> <head> ...
- js动画之同时运动
一个物体可以同时做多个运动,而不是完成一个运动再一个运动,而是让你感觉他们是同时发生的. 直接上代码 <!DOCTYPE html> <html lang="en" ...
- Javascript之链式运动框架1
第一部分:HTML内容: <script src="6-1.js"></script> <script> window.onload=funct ...
- js动画之简单运动二
透明度的变化 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
随机推荐
- 如何为数据源向导填加一种自定义的数据源类型(win示例)
https://www.devexpress.com/Support/Center/Example/Details/T310160
- 兼容版本实现 XMLHttpRequest
创建XMLHttpRequest function createXmlHttp() { var xmlHttp = null; //根据window.XMLHttpRequest对象是否存在使用不同的 ...
- (原创)RS232串口信号定义
好久没用动硬件了,串口更是好久没用用了. 曾经接口信号记得很清楚,久了,忘了. 今天,重新回顾,笔记记下. DB9接口分公头和母头,公头即插针头,电脑机箱上多少公头.母头即插孔座. 合理的硬件设计均以 ...
- python操作csv和excel文件
1.操作csv文件 1).读取文件 import csv f=open("test.csv",'r') t_text=csv.reader(f) for t,i in t_text ...
- HTML5 十大新特性(六)——地理定位
简单地用一句话概括就是,使用js获取浏览器当前所在的地理坐标,实现LBS(Location Based Service,基于定位的服务). 下面写一下它的基本调用: if(navigator.geol ...
- jquery.select2 模糊查询
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link re ...
- ngui中 代码调用按钮事件(后来改成了按钮绑定键盘..)
ngui中 代码调用按钮事件 好烦人啊这个问题, 我弄完发上来 这个问题解决了一半 发现可以用 按钮绑定来解决这个问题,并且更安全方便快速 直接在按钮上添加一个 key binding 指定按键 搞定 ...
- MAC OSX环境下cordova+Ionic的安装配置
一.简介 1.Ionic是什么 IONIC 是目前最有潜力的一款 HTML5 手机应用开发框架.通过 SASS 构建应用程序,它提供了很多 UI 组件来帮助开发者开发强大的应用. 它使用 JavaSc ...
- Sprint1(第三天11.16)
Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/qu ...
- SQLPlus 在连接时通常有四种方式
1. sqlplus / as sysdba 操作系统认证,不需要数据库服务器启动listener,也不需要数据库服务器处于可用状态.比如我们想要启动数据库就可以用这种方式进入 sqlpl ...