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 相关文章推荐
js自动下载文件到本地的实现代码
Apr 28 Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
Aug 01 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
Vue vee-validate插件的简单使用
Jun 22 Vue.js
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
QueryPath PHP 中的jQuery
2010/04/11 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Django缓存系统实现过程解析
2019/08/02 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
简约控的天堂:The Undone
2016/12/21 全球购物
财务会计毕业生个人求职信
2014/02/03 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
妇产科护理心得体会
2016/01/22 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
详解python网络进程
2021/06/15 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL