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 相关文章推荐
javascript编程起步(第五课)
Jan 10 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
js 效率组装字符串 StringBuffer
Dec 23 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
angular $watch 一个变量的变化(实例讲解)
Aug 02 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
Feb 01 Javascript
详解vue路由
Aug 05 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
python轻松实现代码编码格式转换
2015/03/26 Python
Python缩进和冒号详解
2016/06/01 Python
全面了解python字符串和字典
2016/07/07 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
《回乡偶书》教学反思
2014/04/12 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
复活读书笔记
2015/06/29 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript