基于前几篇的运动框架基础,本文主要讲解一下链式运动,就是运动完后接着再运动,比如很多网站中,一个方框的出现和退出:出现时先变宽再变高,退出时先变矮再变窄退出!
之前的模型是:

startMove(obj, json);
现在改为:
startMove(obj, json, fn);
也就是在第一次运动结束的时候执行fn(); fn是传过来的一个参数,这个参数是个函数,定时器清理之后手动运行fn();如果想采用链式运动,那就是在fn中再调用startMove(obj, json, fn),再在里面的fn中调用startMove(obj, json, fn),可以一直玩下去
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>运动框架(五):链式运动到完美运动</title>
<style type="text/css">
div {
width: 100px;
height: 100px;
background: orange;
margin: 10px;
float: left;
}
</style>
</head>
<body>
<div id="div1"></div>
<script type="text/javascript">
var oDiv = document.getElementById('div1');
oDiv.onmouseover = function() {
startMove(oDiv, {width:300,opacity:30}, function() {
startMove(oDiv, {height:500});
});
};
oDiv.onmouseout = function() {
startMove(oDiv, {height:100}, function() {
startMove(oDiv, {width:100,opacity:100});
})
};
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, null)[attr];
}
}
function startMove(obj, json, fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var bStop = true;
for (var attr in json) {
var cur = 0;
if (attr === 'opacity') {
cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
} else {
cur = parseInt(getStyle(obj, attr));
}
if (cur != json[attr]) {
bStop = false;
}
var speed = (json[attr] - cur)/10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
cur += speed;
if (attr === 'opacity') {
obj.style.filter = 'alpha(opacity:' + cur + ')';
obj.style.opacity = cur/100;
} else {
obj.style[attr] = cur + 'px';
}
}
if (bStop) {
clearInterval(obj.timer);
if (fn) fn();
}
}, 30);
}
</script>
</body>
</html>
最后提取出来的完美运动框架如下,motionFrame.js:
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, null)[attr];
}
}
function startMove(obj, json, fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var bStop = true;
for (var attr in json) {
var cur = 0;
if (attr === 'opacity') {
cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
} else {
cur = parseInt(getStyle(obj, attr));
}
if (cur != json[attr]) {
bStop = false;
}
var speed = (json[attr] - cur)/10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
cur += speed;
if (attr === 'opacity') {
obj.style.filter = 'alpha(opacity:' + cur + ')';
obj.style.opacity = cur/100;
} else {
obj.style[attr] = cur + 'px';
}
}
if (bStop) {
clearInterval(obj.timer);
if (fn) fn();
}
}, 30);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 运动框架
# 链式运动
# 完美运动
# JS多物体 任意值 链式 缓冲运动
# Js实现简单的小球运动特效
# js运动动画的八个知识点
# javascript实现10个球随机运动、碰撞实例详解
# JS实现匀速运动的代码实例
# 使用JavaScript 实现对象 匀速/变速运动的方法
# js实现缓冲运动效果的方法
# JavaScript中的匀速运动和变速(缓冲)运动详细介绍
# Javascript实现重力弹跳拖拽运动效果示例
# javascript动画之圆形运动
# 环绕鼠标运动作小球
# Javascript模拟加速运动与减速运动代码分享
# JS运动特效之链式运动分析
# 链式
# 是在
# 是个
# 那就
# 也就
# 在里面
# 现时
# 完后
# 大家多多
# 几篇
# 中再
# 变窄
# 变宽
# brush
# xhtml
# DOCTYPE
# lt
# false
# gt
# 一直玩
相关文章:
css网站制作参考文献有哪些,易聊怎么注册?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
如何挑选高效建站主机与优质域名?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
javascript中对象的定义、使用以及对象和原型链操作小结
建站主机与服务器功能差异如何区分?
兔展官网 在线制作,怎样制作微信请帖?
大同网页,大同瑞慈医院官网?
代购小票制作网站有哪些,购物小票的简要说明?
建设网站制作价格,怎样建立自己的公司网站?
高端云建站费用究竟需要多少预算?
如何在阿里云服务器自主搭建网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
清除minerd进程的简单方法
如何在云虚拟主机上快速搭建个人网站?
如何通过宝塔面板实现本地网站访问?
如何在阿里云虚拟服务器快速搭建网站?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
利用JavaScript实现拖拽改变元素大小
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何快速搭建高效香港服务器网站?
如何获取免费开源的自助建站系统源码?
如何选择美橙互联多站合一建站方案?
制作表格网站有哪些,线上表格怎么弄?
建站之星logo尺寸如何设置最合适?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站之星导航配置指南:自助建站与SEO优化全解析
广州商城建站系统开发成本与周期如何控制?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
高性能网站服务器部署指南:稳定运行与安全配置优化方案
高防服务器租用指南:配置选择与快速部署攻略
如何确保FTP站点访问权限与数据传输安全?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
建站之星安装需要哪些步骤及注意事项?
如何快速登录WAP自助建站平台?
网页设计网站制作软件,microsoft office哪个可以创建网页?
电商平台网站制作流程,电商网站如何制作?
如何制作算命网站,怎么注册算命网站?
如何高效利用200m空间完成建站?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何高效搭建专业期货交易平台网站?
如何通过FTP空间快速搭建安全高效网站?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
微信小程序 input输入框控件详解及实例(多种示例)
建站主机如何选?高性价比方案全解析
定制建站策划方案_专业建站与网站建设方案一站式指南
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
*请认真填写需求信息,我们会在24小时内与您取得联系。