首页 > 代码库 > 封装运动框架单个属性
封装运动框架单个属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>封装运动框架的单个属性</title>
<style>
div{
width: 100px;
height: 100px;
font-weight:bold;">pink;
position: absolute;
left: 10px;
top: 50px;
}
</style>
</head>
<body>
<button id="btn200">200</button>
<button id="btn400">400</button>
<div id="demo"></div>
</body>
</html>
<script>
var btn200 = document.getElementById("btn200");
var btn400 = document.getElementById("btn400");
var demo = document.getElementById("demo");
btn200.onclick = function(){
animate(demo,"width",400);
}
btn400.onclick = function(){
animate(demo,"left",100);
}
function animate(obj,attr,target){
clearInterval(obj.timer);
obj.timer = setInterval(function() {
//先算出步长 盒子的动画原理 盒子本身的样式+步长
//我们怎么知道当前的样式
//得到当前样式后,用(target - current )/10 计算出步长
//得到当前样式 parseInt目的是为了去掉PX
var current = parseInt(getStyle(obj,attr));
var step = (target - current) / 10;
step = step > 0? Math.ceil(step):Math.floor(step); //取整函数
//开始做动画
obj.style[attr] = current + step + "px";
if(target == current){
clearInterval(obj.timer);
}
},30)
}
//封装返回当前样式函数
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return window.getComputedStyle(obj,null)[attr];
}
}
</script>
封装运动框架单个属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。