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 相关文章推荐
简单的无缝滚动程序-仅几行代码
May 08 Javascript
javascript中的几个运算符
Jun 29 Javascript
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 Javascript
ES6概念 Symbol.keyFor()方法
Dec 25 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
Javascript(es2016) import和require用法和区别详解
Aug 11 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
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 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
英国假发网站:Hothair
2018/02/23 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
上海中网科技笔试题
2012/02/19 面试题
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
工程质量承诺书范文
2014/03/27 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
用电申请报告范文
2015/05/18 职场文书
薪资证明范本
2015/06/19 职场文书
2015初中团委工作总结
2015/07/28 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
python urllib库的使用详解
2021/04/13 Python