javascript多物体运动实现方法分析


Posted in Javascript onJanuary 08, 2016

本文实例讲述了javascript多物体运动实现方法。分享给大家供大家参考,具体如下:

这里需要注意每个运动物体的定时器作为物体的属性独立出来互不影响,属性与运动对象绑定,不能公用

运行效果截图如下:

javascript多物体运动实现方法分析

例子:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>多物体运动</title>
<style>
div{ width:100px; height:100px; background:red; float:left; margin:10px; border:1px solid black; opacity:0.3; filter:alpha(opacity=30);}
</style>
<script>
window.onload = function()
{
 var aDiv = document.getElementsByTagName('div');
 aDiv[0].onmouseover = function()
 {
  startMove(this, 'width', 300);
 };
 aDiv[0].onmouseout = function()
 {
  startMove(this, 'width', 100);
 };
 aDiv[1].onmouseover = function()
 {
  startMove(this, 'height', 300);
 };
 aDiv[1].onmouseout = function()
 {
  startMove(this, 'height', 100);
 };
 aDiv[2].onmouseover = function()
 {
  startMove(this, 'opacity', 100);
 };
 aDiv[2].onmouseout = function()
 {
  startMove(this, 'opacity', 30);
 };
 aDiv[3].onmouseover = function()
 {
  startMove(this, 'borderWidth', 20);
 };
 aDiv[3].onmouseout = function()
 {
  startMove(this, 'borderWidth', 1);
 };
};
function getStyle(obj, attr)
{
 if(obj.currentStyle){
  return obj.currentStyle[attr];
 }else{
  return getComputedStyle(obj, false)[attr];
 }
}
function startMove(obj, attr, iTarget)
{
 clearInterval(obj.timer);
 obj.timer = setInterval(function(){
  var iCur = 0;
  if(attr == 'opacity'){
   iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100);   
  }else{
   iCur = parseInt(getStyle(obj, attr));
  }
  var iSpeed = (iTarget - iCur) / 8;
  iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
  if(iCur == iTarget){
   clearInterval(obj.timer);
  }else{
   if(attr == 'opacity'){
    obj.style.filter = 'alpha(opacity='+ (iCur+iSpeed) +')';
    obj.style.opacity = (iCur+iSpeed)/100;
   }else{
    obj.style[attr] = iCur + iSpeed + 'px';
   }
  }
 }, 30);
}
</script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
</body>
</html>

更多关于JavaScript运动效果相关内容可查看本站专题:《JavaScript运动效果与技巧汇总》

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

Javascript 相关文章推荐
把input初始值不写value的具体实现方法
Jul 04 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
基于jquery编写分页插件
Mar 07 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
Aug 24 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
js实现符合国情的日期插件详解
Jan 19 Javascript
Node.js的Koa实现JWT用户认证方法
May 05 Javascript
详解vue更改头像功能实现
Apr 28 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
Jan 08 #Javascript
javascript匀速运动实现方法分析
Jan 08 #Javascript
js如何改变文章的字体大小
Jan 08 #Javascript
JavaScript缓冲运动实现方法(2则示例)
Jan 08 #Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
Jan 08 #Javascript
基于javascript实现右下角浮动广告效果
Jan 08 #Javascript
jQuery数据类型小结(14个)
Jan 08 #Javascript
You might like
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
js实现微博发布小功能
2017/01/12 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python删除特定文件的方法
2015/07/30 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
护理专业自我鉴定
2014/01/30 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
单位消防安全责任书
2014/07/23 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
教育合作协议范本
2014/10/17 职场文书
春节慰问信范文
2015/02/15 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
MySQL查询日期时间
2022/05/15 MySQL
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL
Android中View.post和Handler.post的关系
2022/06/05 Java/Android