鼠标移动到分享按钮上,侧边栏自动展开,并做缓冲运动(先快后慢)
直接上代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>分享</title>
<style type="text/css"> *{ margin: 0; padding: 0; } .box{ position: absolute; width: 100px; height: 400px; background: green; left: -100px; top: 50%; margin-top:-200px; text-align: center; font-size: 20px; color: #fff; line-height: 400px; } .box-share{ position: absolute; height: 40px; width: 20px; background: red; right: -20px; top: 50%; margin-top: -25px; color: #000; font-size: 16px; text-align: center; line-height: 20px; padding: 5px 0; border-radius: 0 10px 10px 0; } </style>
<script type="text/javascript"> window.onload = function () { let box = document.getElementsByClassName('box')[0]; box.onmouseover = () => { startMove(0) } box.onmouseout = () => { startMove(-100) } } let timer = null let startMove = iTarget => { let box = document.getElementsByClassName('box')[0] clearInterval(timer) timer = setInterval(() => { let speed = (iTarget - box.offsetLeft)/15 speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed) if (box.offsetLeft == iTarget) { clearInterval(timer) } else { box.style.left = box.offsetLeft + speed + 'px' } }, 30) } </script>
</head>
<body>
<div class="box">
box内容
<div class="box-share">分享</div>
</div>
</body>
</html>