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 相关文章推荐
jQuery实现form表单reset按钮重置清空表单功能
Dec 18 Javascript
自动设置iframe大小的jQuery代码
Sep 11 Javascript
Jquery倒计时源码分享
May 16 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
javascript实现禁止右键和F12查看源代码
Dec 26 Javascript
原生js结合html5制作小飞龙的简易跳球
Mar 30 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
JS动画定时器知识总结
Mar 23 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
深入浅析vue全局环境变量和模式
Apr 28 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 执行系统命令的方法
2009/07/07 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
php字符串分割函数用法实例
2015/03/17 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
连锁酒店店长职责范本
2014/02/13 职场文书
八一建军节慰问信
2015/02/14 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
春季运动会加油词
2015/07/18 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL