<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="智能社 - zhinengshe.com" />
<meta name="copyright" content="智能社 - zhinengshe.com" />
<title>智能社 - www.zhinengshe.com</title>
<style>
*{margin:;padding:;list-style:none;}
#ul1{width:516px;height:516px; margin:10px auto; position:relative;}
#ul1 li{float:left;width:150px; height:150px; border:1px solid #; background:#ccc; margin:10px;}
</style>
<script src="move.js"></script>
<script> window.onload = function(){ var oBtn = document.getElementById("btn1");
var oUl = document.getElementById("ul1");
var aLi = oUl.children; //布局转换
var aPos = [];
for(var i = ; i < aLi.length; i++){
aPos[i] = {left:aLi[i].offsetLeft,top:aLi[i].offsetTop}; aLi[i].style.left = aPos[i].left + "px";
aLi[i].style.top = aPos[i].top + "px";
} for(var i = ; i < aLi.length; i++){ aLi[i].style.position = "absolute";
aLi[i].style.margin = "";
} var timer = null;
oBtn.onclick = function(){ var i = ;
clearInterval(timer);
timer = setInterval(function(){ (function(index){
move(aLi[i],
{width:,height:,left:,top:,opacity:},
{complete:function(){
//alert(index);
if(index == aLi.length - ){
//alert("运动完成"); i = aLi.length - ;
clearInterval(timer);
timer = setInterval(function(){ move(aLi[i],
{
width:,height:,
left:aPos[i].left,top:aPos[i].top,
opacity:
}
); i--; if(i == -){
clearInterval(timer);
} },);
} }
}); })(i); i++; if(i == aLi.length){
clearInterval(timer);
} },);
}; }; </script>
</head> <body>
<input id="btn1" type="button" value="收起来"/>
<ul id="ul1"> <li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul> </body>
</html>
//版权 北京智能社©, 保留所有权利

function getStyle(obj,name){
return (obj.currentStyle || getComputedStyle(obj,false))[name];
} function move(obj,json,options){ options = options || {};
options.duration = options.duration || ;
options.easing = options.easing || "ease-out"; var start = {};
var dis = {}; for(var name in json){ start[name] = parseFloat(getStyle(obj,name)); dis[name] = json[name] - start[name];
} var count = Math.round(options.duration/); var n = ; clearInterval(obj.timer);
obj.timer = setInterval(function(){ n++; for(var name in json){ var cur = start[name] + dis[name]/count*n; switch(options.easing){
case "linear":
var a = n/count;
var cur = start[name] + dis[name]*a; break;
case "ease-in":
var a = n/count;
var cur = start[name] + dis[name]*Math.pow(a,); break;
case "ease-out":
var a = - n/count;
var cur = start[name] + dis[name]*( - Math.pow(a,));
break;
} if(name == "opacity"){
obj.style.opacity = cur;
obj.style.filter = "alpha(opacity:"+cur*+")";
} else {
obj.style[name] = cur + "px";
}
} if(n == count){
clearInterval(obj.timer);
options.complete && options.complete();
} },); }

js运动例子1的更多相关文章

  1. JS运动从入门到兴奋1

    hello,我是沐晴,一个充满了才华,却靠了照骗走江湖的前端妹子.在这个充满PS的年代,这你们都信,哈哈,废话不多说,今天要分享的是关注JS运动的知识.楼主一直认为,不管学习什么,核心思想才是王道,掌 ...

  2. JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 第八节 JS运动基础

    运动基础 让Div运动起来 速度——物体运动的快慢 运动中的Bug 不会停止 速度取某些值会无法停止 到达位置后再点击还会运动 重复点击速度加快 匀速运动(速度不变) 运动框架及应用: 运动框架: 在 ...

  4. 带无缝滚动的轮播图(含JS运动框架)

    今天学习了一下轮播图的写作,想到前一阵学过的无缝滚动得思想,所以就把轮播与滚动结合了一下.不过我的代码的神逻辑我自己都不敢恭维,在没网没参照的情况下,只能硬着头皮往下写,希望跟大家共勉吧. js运动框 ...

  5. js运动框架之一条乱跑的虫子

    克隆与运动框架的联合应用 效果:点击元素块后,元素块开始随机的向任何方向移动,并附带一堆颜色随机的"尾巴".每个方向运动3秒后改变方向,同时笑脸变哭脸. 如图所示: 朝某个方向运动 ...

  6. 关于js运动的一些总结

    js运动实现,有两种.一种是速度版,另一种是时间版. 速度版是通过对速度的加减乘除,得出元素的运动数据.时间版是通过对时间进行Tween公式运算,得出元素的运动数据. 速度版运动优点:容易在运动过程中 ...

  7. js运动动画

    原文:js运动动画 今天简单的学了一下js运动动画,再此感谢慕课网的这位老师http://www.imooc.com/view/167,讲的很不错. 下面是我整理出来的结果. 知识点一:速度动画. 1 ...

  8. JS运动 - 无缝滚动和缓动动画

    JS运动 - 无缝滚动和缓动动画 无缝滚动原理:首先先复制两张图片(第一张和第二张)放到最后面;ul绝对定位,如果ul的left值大于等于4张图片的宽度,就应该快速复原为0. html <!DO ...

  9. 解析JS运动

    解析JS运动 物体运动原理:通过改变物体的位置,而发生移动变化. 任何运动都是相对的,就像物理中的运动公式:s(要达到的)=s0(当前的样式值)+vt. 方法:      1.运动的物体使用绝对定位 ...

随机推荐

  1. IDEA开发常用快捷键

    以下快捷键均为初始快捷键,可以进行自定义. 查询快捷键CTRL+N   查找类 CTRL+SHIFT+N  查找文件 CTRL+SHIFT+ALT+N 查找类中的方法或变量 CIRL+B   找变量的 ...

  2. BZOJ 1063 道路设计(树形DP)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1063 题意:给出一个无环图( 也就是树,但是也有可能是森林),代表一个国家的城市.1是首 ...

  3. Python3基础 __setattr__ 在属性被赋值的时候,新增提示功能

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. Wannafly14挑战赛 C(tarjan缩点)题解

    题目:牛客题目链接 思路:这道题有点像这道题 先缩点,缩完之后判断一下整个强连通分量入度是不是0,如果是的话向ans压入该强连通分量最小的那个值.最后排序一下ans输出就行了. 思路一下就想到了,就是 ...

  5. BZOJ5170: Fable 树状数组

    Description 有这么一则传闻,O(nlogn)的排序发明之前,滋滋国的排序都是采用的冒泡排序.即使是冒泡排序,对当时的国民 来说也太复杂太难以理解,于是滋滋国出现了这样一个职业——排序使,收 ...

  6. [shiro] - 怎样使用shiro?

    shiro是什么? Shiro是apache旗下的一个开源框架, 它将软件系统的安全认证相关的功能抽取出来, 实现用户身份认证, 权限授权, 加密, 会话管理等功能, 组成一个通用的安全认证框架. 为 ...

  7. Java中引用的详解

    Java中没有指针,到处都是引用(除了基本类型).所以,当然,你肯定知道java的引用,并用了很久,但是是不是对此了解地比较全面?而这些引用有什么作用,且有什么不同呢?Java中有个java.lang ...

  8. Codeforces Beta Round #94 div 1 D Numbers map+思路

    D. Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  9. Python 以指定宽度格式化输出

    当对一组数据输出的时候,我们有时需要输出以指定宽度,来使数据更清晰.这时我们可以用format来进行约束 mat = "{:20}\t{:28}\t{:32}" print(mat ...

  10. 【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试

    前言 Mock是一个做自动化测试永远绕不过去的话题.本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法. 可能有的小伙伴不太了解mock在实际自动化测试过程中 ...