链式运动框架
来源:互联网 发布:软件的摊销年限 编辑:程序博客网 时间:2024/05/16 17:08
<html>
<head>
<meta charset="utf-8">
<title>侧边栏</title>
<style type="text/css">
*{margin:0;padding:0}
div{width:100px;
height:100px;
background:red;
border:1px solid black;
margin-top:10px;
}
</style>
<script>
window.onload = function(){
var odiv = document.getElementById("dd")
function startMove(obj,json,fn){
//设置计时器
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var stop = true; //假设json中所有的属性都已经达到目标值
for(var attr in json){
//1.获取当前值
var cur = 0;
if(attr == "opacity"){
cur = parseInt(parseFloat(getStyle(obj,attr)) * 100);//若是透明度属性先将其数值转换
}else{
cur = parseInt(getStyle(obj,attr));//获取元素初始属性的属性值
}
//2.计算速度
var speed = (json[attr] - cur) / 8; //基数
// 目标位置 初始位置
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);//解决元素还没到达目标位置是速度变为零或到达目标位后抖动
//3.判断json中所有的对象是否达到目标值
if(cur != json[attr]){
stop = false;
}
//4.设置运动
if(attr == "opacity"){
obj.style.opacity = (cur + speed) / 100;
obj.style.filter = "alpha(opacity=" + (cur + speed) + ")";
}else{
obj.style[attr] = cur + speed + "px";
}
console.log(cur + ":" + json[attr] + ":" + speed);
}
//检测停止
if(stop){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},30)
}
//获取内部样式
function getStyle(obj,attr){
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,1)[attr];
}
odiv.onmousemove = function(){
startMove(odiv,{"width":500},function(){
startMove(odiv,{"height":400},function(){
startMove(odiv,{"opacity":10})
})
})
}
odiv.onmouseout = function(){
startMove(odiv,{"width":100},function(){
startMove(odiv,{"height":100},function(){
startMove(odiv,{"opacity":100})
})
})
}
}
</script>
</head>
<body>
<input type="button" value="开始运动" id="btn"/>
<div id="dd"></div>
</body>
</html>
<head>
<meta charset="utf-8">
<title>侧边栏</title>
<style type="text/css">
*{margin:0;padding:0}
div{width:100px;
height:100px;
background:red;
border:1px solid black;
margin-top:10px;
}
</style>
<script>
window.onload = function(){
var odiv = document.getElementById("dd")
function startMove(obj,json,fn){
//设置计时器
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var stop = true; //假设json中所有的属性都已经达到目标值
for(var attr in json){
//1.获取当前值
var cur = 0;
if(attr == "opacity"){
cur = parseInt(parseFloat(getStyle(obj,attr)) * 100);//若是透明度属性先将其数值转换
}else{
cur = parseInt(getStyle(obj,attr));//获取元素初始属性的属性值
}
//2.计算速度
var speed = (json[attr] - cur) / 8; //基数
// 目标位置 初始位置
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);//解决元素还没到达目标位置是速度变为零或到达目标位后抖动
//3.判断json中所有的对象是否达到目标值
if(cur != json[attr]){
stop = false;
}
//4.设置运动
if(attr == "opacity"){
obj.style.opacity = (cur + speed) / 100;
obj.style.filter = "alpha(opacity=" + (cur + speed) + ")";
}else{
obj.style[attr] = cur + speed + "px";
}
console.log(cur + ":" + json[attr] + ":" + speed);
}
//检测停止
if(stop){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},30)
}
//获取内部样式
function getStyle(obj,attr){
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,1)[attr];
}
odiv.onmousemove = function(){
startMove(odiv,{"width":500},function(){
startMove(odiv,{"height":400},function(){
startMove(odiv,{"opacity":10})
})
})
}
odiv.onmouseout = function(){
startMove(odiv,{"width":100},function(){
startMove(odiv,{"height":100},function(){
startMove(odiv,{"opacity":100})
})
})
}
}
</script>
</head>
<body>
<input type="button" value="开始运动" id="btn"/>
<div id="dd"></div>
</body>
</html>
0 0
- JS链式运动框架
- 链式运动框架
- 链式运动框架
- 链式运动框架
- 链式运动实例 运动框架应用 微博
- JS 运动框架2 链式运动
- js运动技术--链式运动框架
- 完美运动(链式运动)JS框架
- JavaScript运动框架(五):链式运动到完美运动
- js运动-链式运动、摩擦运动、缓冲运动、运动框架加入缓冲
- (43)JS运动之链式运动框架
- 链式运动
- 链式运动
- 链式运动
- js运动-链式运动
- Javascript 链式运动框架——逐行分析代码,让你轻松了运动的原理
- Javascript 链式运动框架——逐行分析代码,让你轻松了解运动的原理
- JS链式运动
- redis的安装
- 关于 Date() 函数在 iOS 中的一个小坑
- Python Thrift示例
- 剑指offer——和为S的连续正数序列
- Android系统下在te文件中为指定服务添加sepolicy权限
- 链式运动框架
- spring源码系列-1
- Unity动画控制组件UIPlayTween
- Javascript学习笔记
- Mac hadoop伪分布式安装
- bzoj 3262 陌上花开
- 第九章 特殊方法,属性和迭代器
- Eclipse报错no opencv_java249 in java.library.path解决方法
- Mysql