js实现类似jquery里animate动画效果的方法


Posted in Javascript onApril 10, 2015

本文实例讲述了js实现类似jquery里animate动画效果的方法。分享给大家供大家参考。具体分析如下:

该实例可实现鼠标移上,先宽度变化,再高度变化,最后透明度变化,鼠标移出,再依次变回去的效果。

要点一:

startrun(obj,attr,target,fn)
box.onmouseover = function(){
startrun(box,"width",200,function(){
startrun(box,"height",200,function(){
startrun(box,"opacity","100")
});
});
}

如上面,函数也可以做为参数使用,就可以达到先执行某个动作,再执行某个动作的效果了。

要点二:

if(cur == target){
clearInterval(obj.timer);
if(fn){
fn();
}
}

当运动到达目标点,关闭定时器,然后就可以执行新的函数了。

最后,上代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>无标题文档</title>
<style>
<!--
body{margin:0; padding:0; font:12px/1.5 arial;}
#box{width:100px; height:100px; position:absolute;
background:#06c; left:0;filter:alpha(opacity=30); opacity:0.3;}
-->
</style>
<script>
<!--
function getstyle(obj,name){
 if(obj.currentStyle){
  return obj.currentStyle[name];
 }else{
  return getComputedStyle(obj,false)[name];
 }
}
window.onload = function(){
 var box = document.getElementById("box");
 box.onmouseover = function(){
  startrun(box,"width",200,function(){
   startrun(box,"height",200,function(){
    startrun(box,"opacity","100")
   });
  });
 }
 box.onmouseout = function(){
  startrun(box,"height",100,function(){
   startrun(box,"width",100,function(){
    startrun(box,"opacity","30");
   });
  });
 }
}
function startrun(obj,attr,target,fn){
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
  var cur = 0;
  if(attr == "opacity"){
   cur = Math.round(parseFloat(getstyle(obj,attr))*100);
  }else{
   cur = parseInt(getstyle(obj,attr));
  }
  var speed = (target-cur)/8;
  speed = speed>0?Math.ceil(speed):Math.floor(speed);
  
  if(cur == target){
   clearInterval(obj.timer);
   if(fn){
    fn();
   }
  }else{
   if(attr == "opacity"){
    obj.style.filter = "alpha(opacity="+(cur+speed)+")";
    obj.style.opacity = (cur+speed)/100;
   }else{
   obj.style[attr] = cur + speed + "px";
   }
  }
 },30)
}
//-->
</script>
</head>
<body>
<div id="box">
</div>
</body>
</html>

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

Javascript 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
类之Prototype.js学习
Jun 13 Javascript
JavaScript CSS修改学习第二章 样式
Feb 19 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
Angular1.x自定义指令实例详解
Mar 01 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
Jun 12 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 #Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
Apr 10 #Javascript
js简单的点击返回顶部效果实现方法
Apr 10 #Javascript
浅谈JavaScript正则表达式分组匹配
Apr 10 #Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 #Javascript
JavaScript 变量、作用域及内存
Apr 08 #Javascript
JavaScript Function函数类型介绍
Apr 08 #Javascript
You might like
深入php数据采集的详解
2013/06/02 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
Python 操作文件的基本方法总结
2017/08/10 Python
python 定时修改数据库的示例代码
2018/04/08 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
如何利用python生成MD5并去重
2020/12/07 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
军训自我鉴定
2013/12/14 职场文书
病危通知书样本
2015/04/17 职场文书
活动总结模板大全
2015/05/11 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
太行山上观后感
2015/06/05 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书