实现思路:
创建一个小球Div ,
点击按钮,先将小球移到点击的地方
设置个定时器(可以重复点击)
向页面底部抛掷小球,css动画, 立方贝塞尔曲线
页面创建小球:
return (
<>
<div id="ball"></div>
</>
)
css:
#ball {
width: 15px;
height: 15px;
background: #f4ad52;
border-radius: 50%;
position: fixed;
transition: left 1s linear, top 1s ease-in;
z-index: 1;
}
功能逻辑代码实现:
// 点击按钮 抛掷小球
function dianji(evt) {
var $ball = document.getElementById('ball'); //获取小球的dom节点
// 将小球进行归位,移到点击的位置,
$ball.style.top = evt.pageY + 'px';
$ball.style.left = evt.pageX + 'px';
$ball.style.transition = 'left 0s, top 0s'; //动画
// 小球向下进行抛掷, 设置定时器可以重复点击
setTimeout(() => {
$ball.style.top = window.innerHeight + 'px';
$ball.style.bottom = "20px"
$ball.style.left = '10px';
//css动画 加上cubic-bezier(.35,.8,1,1) 立方贝塞尔曲线 底部有官网链接
$ball.style.transition = 'left 1s cubic-bezier(.35,.8,1,1), top 1s ease-in';
}, 20)
}
立方贝赛尔曲线: cubic-bezier.com (可以设置好曲线弧度,直接复制)