前面两篇都是单物体的运动,本文开始讲多物体的运动,比如多个div的各自不同的属性如宽,高,字体大小,透明度的缓冲运动变化。

从本文起,就不再使用offsetWdith,offsetHeight了等等,因为会出现问题,比如加个border,offsetWidth就会出现严重问题,参见我个人的博客JavaScript中offsetWidth的’bug’及其对策解决方案就是封装getStyle(obj, attr) 函数,用了获取运动中的当前值!
function getStyle(obj, name) {
if(obj.currentStyle) {//IE
return obj.currentStyle[name];
} else {
return getComputedStyle(obj, false)[name];
}
}
既然是各个物体各自运动,那么他们之间有些变量就不能共享,比如定时器,每个对象都应有自己的定时器,因为每次启动定时器的时候先要清除上一个定时器,这就导致如果第一个物体还在运动,就把鼠标移动到第二个物体,瞬间清除上个定时器,导致第一个物体的运动不能运动到目标值就停下
另外,物体运动的样式,基本上就两类:一类是大小也就是px为单位的属性,还有一类就是透明度!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>运动框架(三):多物体运动</title>
<style type="text/css">
div {
width: 100px;
height: 100px;
background: yellow;
margin: 10px;
float: left;
filter: alpha(opacity:100);
opacity: 1;
}
</style>
</head>
<body>
<div id="div1">变高</div>
<div id="div2">变宽</div>
<div id="div3">fontSize Changed</div>
<div id="div4">alpha</div>
<script type="text/javascript">
var doc = document;
var oDiv1 = doc.getElementById('div1');
oDiv1.onmouseover = function() {
startMove(this, 'height', 300);
};
oDiv1.onmouseout = function() {
startMove(this, 'height', 100);
};
var oDiv2 = doc.getElementById('div2');
oDiv2.onmouseover = function() {
startMove(this, 'width', 300);
};
oDiv2.onmouseout = function() {
startMove(this, 'width', 100);
};
var oDiv3 = doc.getElementById('div3');
oDiv3.onmouseover = function() {
startMove(this, 'fontSize', 30);
};
oDiv3.onmouseout = function() {
startMove(this, 'fontSize', 16);
};
var oDiv4 = doc.getElementById('div4');
oDiv4.onmouseover = function() {
startMove(this, 'opacity', 30);
};
oDiv4.onmouseout = function() {
startMove(this, 'opacity', 100);
};
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, null)[attr];
}
}
function startMove(obj, attr, iTarget) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var cur = 0;
if (attr === 'opacity') {
cur = parseFloat(getStyle(obj, attr)) * 100;
} else {
cur = parseInt(getStyle(obj, attr));
}
var speed = (iTarget - cur) / 10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (iTarget == cur) {
clearInterval(obj.timer);
} else {
if (attr === 'opacity') {
cur += speed;
obj.style.filter = 'alpha(opacity:' + cur + ')';
obj.style.opacity = cur / 100;//FireFox && Chrome
} else {
cur += speed;
obj.style[attr] = cur + 'px';
}
}
}, 30);
}
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js运动框架
# js多物体任意值运动
# js物体运动
# JS实现多物体运动的方法详解
# js多个物体运动功能实例分析
# javascript多物体运动实现方法分析
# Javascript 多物体运动的实现
# JS运动改变单物体透明度的方法分析
# JS实现物体带缓冲的间歇运动效果示例
# JS多物体实现缓冲运动效果示例
# JS实现多物体缓冲运动实例代码
# JS多物体 任意值 链式 缓冲运动
# JavaScript实现多个物体同时运动
# 第一个
# 自己的
# 都是
# 就会
# 还在
# 鼠标
# 多个
# 这就
# 用了
# 就把
# 就不能
# 上个
# 二个
# 他们之间
# 两类
# 到第
# 大家多多
# 两篇
# 瞬间
# 变宽
相关文章:
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何在万网ECS上快速搭建专属网站?
如何选购建站域名与空间?自助平台全解析
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
建站之星代理如何获取技术支持?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何获取开源自助建站系统免费下载链接?
网站制作需要会哪些技术,建立一个网站要花费多少?
C++中引用和指针有什么区别?(代码说明)
婚礼视频制作网站,学习*后期制作的网站有哪些?
网页设计与网站制作内容,怎样注册网站?
电商网站制作公司有哪些,1688网是什么意思?
广州建站公司哪家好?十大优质服务商推荐
网站代码制作软件有哪些,如何生成自己网站的代码?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
手机网站制作与建设方案,手机网站如何建设?
ui设计制作网站有哪些,手机UI设计网址吗?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何快速搭建FTP站点实现文件共享?
小型网站建站如何选择虚拟主机?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
建站主机SSH密钥生成步骤及常见问题解答?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何通过服务器快速搭建网站?完整步骤解析
制作网页的网站有哪些,电脑上怎么做网页?
装修招标网站设计制作流程,装修招标流程?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
长沙企业网站制作哪家好,长沙水业集团官方网站?
济南网站制作的价格,历城一职专官方网站?
建站之星官网登录失败?如何快速解决?
建站主机选虚拟主机还是云服务器更好?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何用虚拟主机快速搭建网站?详细步骤解析
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
,石家庄四十八中学官网?
北京企业网站设计制作公司,北京铁路集团官方网站?
建站主机是否属于云主机类型?
电商平台网站制作流程,电商网站如何制作?
建站主机选购指南与交易推荐:核心配置解析
建站主机选购指南:核心配置优化与品牌推荐方案
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何通过NAT技术实现内网高效建站?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何基于PHP生成高效IDC网络公司建站源码?
成都网站制作报价公司,成都工业用气开户费用?
如何快速搭建高效WAP手机网站吸引移动用户?
如何自定义建站之星网站的导航菜单样式?
如何在腾讯云服务器上快速搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。