先封装一个动画函数
animate.js
function animate(obj,target,callBack){
clearInterval(obj.timer)
obj.timer = setInterval(function(){
var step = (target - obj.offsetLeft) / 10
// 取整数
step = step > 0 ? Math.ceil(step) : Math.floor(step)
if(obj.offsetLeft == target){
// 停止
clearInterval(obj.timer)
//回调函数
if(callBack){
callBack()
}
}
obj.style.left = obj.offsetLeft + step +'px'
},50)
}
animate.html
<!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>
// 引入animate.js文件,下面才能调用
<script src="animate.js"></script>
</head>
<style>
.aside{
position: absolute;
right: 0;
width: 50px;
background-color: aquamarine;
}
.con{
background-color: bisque;
width: 100px;
position: absolute;
left:0;
}
</style>
<body>
<div class="aside">
<span>⬅</span>
<div class="con">我出来了</div>
</div>
<script>
var aside = document.querySelector('.aside')
var con = document.querySelector('.con')
aside.addEventListener('mouseenter',function(){
animate(con,-100,function(){
aside.children[0].innerHTML = '➡'
})
})
aside.addEventListener('mouseleave',function(){
animate(con,0,function(){
aside.children[0].innerHTML = '⬅'
})
})
</script>
</body>
</html>