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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
jQuery 白痴级入门教程
Nov 11 Javascript
JS实现从网页顶部掉下弹出层效果的方法
Aug 06 Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
May 26 Javascript
Vue表单实例代码
Sep 05 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 Javascript
JavaScript实现简单图片切换
Apr 29 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 破解防盗链图片函数
2008/12/09 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
js模拟微博发布消息
2017/02/23 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
详解Python self 参数
2019/08/30 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Python netmiko模块的使用
2020/02/14 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
协议书与合同的区别
2014/04/18 职场文书
关于责任的演讲稿
2014/05/20 职场文书
欢迎词范文
2015/01/27 职场文书
Python数据类型最全知识总结
2021/05/31 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js