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 相关文章推荐
Js的MessageBox
Dec 03 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
js无提示关闭浏览器窗口的两种方法分析
Nov 06 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
vue.js 微信支付前端代码分享
Feb 10 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
May 08 Javascript
深入学习JavaScript 高阶函数
Jun 11 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
Apr 29 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 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 nl2br()格式化输出的详解
2013/06/05 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
python进阶教程之异常处理
2014/08/30 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python 类的特殊成员解析
2018/06/20 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python的Lambda函数用法详解
2019/09/03 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
《植物妈妈有办法》教学反思
2014/02/25 职场文书
师范生自我鉴定
2014/03/20 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
永不妥协观后感
2015/06/10 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Ajax实现三级联动效果
2021/10/05 Javascript
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技