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

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
# 一直玩
相关文章:
建站之星后台密码遗忘?如何快速找回?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
个人网站制作流程图片大全,个人网站如何注销?
建站之星各版本价格是多少?
大连 网站制作,大连天途有线官网?
深入理解Android中的xmlns:tools属性
教学论文网站制作软件有哪些,写论文用什么软件
?
网站制作的步骤包括,正确网址格式怎么写?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
寿县云建站:智能SEO优化与多行业模板快速上线指南
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
建站上传速度慢?如何优化加速网站加载效率?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
黑客如何利用漏洞与弱口令入侵网站服务器?
如何在阿里云通过域名搭建网站?
建站之星备案是否影响网站上线时间?
如何快速搭建支持数据库操作的智能建站平台?
,如何利用word制作宣传手册?
平台云上自助建站如何快速打造专业网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何在Windows服务器上快速搭建网站?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
已有域名和空间如何搭建网站?
建站之星代理商如何保障技术支持与售后服务?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
如何选择域名并搭建高效网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在阿里云虚拟服务器快速搭建网站?
,购物网站怎么盈利呢?
太平洋网站制作公司,网络用语太平洋是什么意思?
建站主机如何选?性能与价格怎样平衡?
教学网站制作软件,学习*后期制作的网站有哪些?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
建站之星展会模板:智能建站与自助搭建高效解决方案
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
西安专业网站制作公司有哪些,陕西省建行官方网站?
制作网站外包平台,自动化接单网站有哪些?
制作网站的软件免费下载,免费制作app哪个平台好?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
婚礼视频制作网站,学习*后期制作的网站有哪些?
小程序网站制作需要准备什么资料,如何制作小程序?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
建站之星如何修改网站生成路径?
详解jQuery中基本的动画方法
如何通过虚拟主机快速完成网站搭建?
,石家庄四十八中学官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。