<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
position: absolute;
left: 0;
width: 100px;
height: 100px;
background-color: rgb(133, 133, 233);
}
span{
position: absolute;
left: 0;
top: 200px;
display: block;
width: 150px;
height: 150px;
background-color: rgb(222, 116, 134);
}
</style>
</head>
<body>
<button>点击村长移动</button>
<div></div>
<span>村长</span>
<script>
// 动画原理
// 1.获得盒子当前位置
// 2.让盒子在当前位置加上1个移动位置
// 3.利用定时器不断重复这个操作
// 4,加一个结束定时器的条件
// 5.注意此元素需要添加定位 才能使用element.style.left
// 简单动画函数封装obj目标对象 target目标位置
// 给不同的元素指定了不同的定时器
function animate(obj,target){
//当我们不断地点击按钮,这个元素的速度会越来越快,因为开启了太多的定时器
//解决方案就是 让我们的元素只有一个定时器执行
//先清除以前的定时器,只保留当前的一个定时器执行
clearInterval(obj.timer);
obj.timer = setInterval(function(){
if(obj.offsetLeft >=target){
// 停止动画 本质是停止定时器
clearInterval(obj.timer);
}
obj.style.left=obj.offsetLeft+1+'px';
},30);
}
var div = document.querySelector('div');
var span = document.querySelector('span');
var btn=document.querySelector('button');
//调用函数
animate(div,300);
btn.addEventListener('click',function(){
animate(span,200);
})
</script>
</body>
</html>
简单动画函数封装——PC端网页特效
于 2022-05-22 14:20:26 首次发布