JS运动特效之链式运动分析


Posted in Javascript onJanuary 24, 2018

本文实例讲述了JS运动特效之链式运动。分享给大家供大家参考,具体如下:

接着前面一篇《JS运动特效之任意值添加运动的方法》继续折腾

链式运动:一个运动接着一个运动。比如:鼠标移入div先让宽变大,接着在让高变大,接着在让透明度变化等等一系列运动连着做。废话不多说,上栗子!!

JS运动特效之链式运动分析

当鼠标移入div的时候,div先变宽,在变高,然后改变透明度;移出又逐次恢复到原样;

实现链式运动,需要对上一篇中的startMove() 函数继续做改进

function startMove(obj,attr,iTarget,fn) 多传入一个fn参数,表示当一个运动结束之后,继续进行下一个运动,当然还需要判断一下,如果有下一个运动,就执行下一个运动,如果没有就继续向下执行

if(fn){
  fn();
}

完整测试代码:

HTML部分:

<body>
<div id="div1"></div>
</body>

css部分:

<style>
  #div1{
   width: 200px;height: 200px;
   background: green;
  }
</style>

js部分:

<script>
  window.onload = function(){
   var oDiv = document.getElementById('div1');
   oDiv.onmouseover = function () {
    startMove(oDiv,'width',300,function () {
     startMove(oDiv,'height',300, function () {
      startMove(oDiv,'opacity',30);
     });
    });
   }
   oDiv.onmouseout = function () {
    startMove(oDiv,'opacity',100, function () {
     startMove(oDiv,'height',200, function () {
      startMove(oDiv,'width',200);
     });
    });
   }
  }
  function getStyle(obj,attr){
   return getComputedStyle ? getComputedStyle(obj,false)[attr] : obj.currentStyle[attr];
  }
  function startMove(obj,attr,iTarget,fn) {//fn:执行下一个运动的函数
   clearInterval(obj.timer);
   obj.timer = setInterval(function () {
    var objAttr = 0;
    if(attr == "opacity"){
     objAttr = Math.round(parseFloat(getStyle(obj,attr))*100);
    }else{
     objAttr = parseInt(getStyle(obj,attr));
    }
    var iSpeed = (iTarget -objAttr)/10;
    iSpeed = iSpeed>0 ?Math.ceil(iSpeed):Math.floor(iSpeed);
    if(objAttr == iTarget){
     clearInterval(obj.timer);
     if(fn){// 如果传了 “下一个运动的函数” 就执行
      fn();
     }
    }else{
     if(attr == "opacity"){
      obj.style.filter = 'alpha(opacity:'+(objAttr+iSpeed)+')';
      obj.style.opacity = (objAttr+iSpeed)/100;
     }else{
      obj.style[attr] = objAttr+iSpeed+'px';
     }
    }
   },30);
  }
</script>

未完待续....

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript ECMA-262-3 深入解析.第三章.this
Sep 28 Javascript
IE关闭时判断及AJAX注销案例学习
Feb 18 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
Jan 26 Javascript
jQuery多选框选择数量限制方法
Feb 08 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
Vue实现6位数密码效果
Aug 18 Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
浅谈Vue.set实际上是什么
Oct 17 Javascript
原生JS实现烟花效果
Mar 10 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 #Javascript
JS运动特效之任意值添加运动的方法分析
Jan 24 #Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 #Javascript
详解node child_process模块学习笔记
Jan 24 #Javascript
浅谈Node.js 子进程与应用场景
Jan 24 #Javascript
除Console.log()外更多的Javascript调试命令
Jan 24 #Javascript
深入理解node.js http模块
Jan 24 #Javascript
You might like
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
微信支付开发维权通知实例
2016/07/12 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
javascript Array对象基础知识小结
2010/11/16 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
JS实现多功能计算器
2020/10/28 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
python实现给字典添加条目的方法
2014/09/25 Python
Python中实现的RC4算法
2015/02/14 Python
python 性能提升的几种方法
2016/07/15 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
雷锋观后感
2015/06/10 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书