当前位置:网站首页>requestAnimationFrame的应用
requestAnimationFrame的应用
2022-08-11 11:13:00 【checkMa】
requestAnimationFrame的应用
案例
何时启用 requestAnimationFrame,何时取消,下面是做了一个小案例。
<!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> .content{
position: relative; } .content > span{
position: absolute; width: 10px; height: 10px; border: 1px solid #bbb; padding: 10px; } </style>
</head>
<body>
<div id="box">
<button id="btn">click</button>
</div>
<div id="content" class="content">
</div>
<script> let list = []; let animating = null; btn.onclick =()=>{
list.push({
left: 0, top: 0 }); animating && window.cancelAnimationFrame(animating) animate() } function render(){
let str = ""; for(let item of list ){
if(item.left < 200){
item.left += easeIn(item.left, 1, 0.02, 200); } if(item.top < 200){
item.top += easeIn(item.top, 1, 0.02, 200); } if(item.top < 200 && item.left < 200){
str += `<span style="left: ${
item.left}px;top: ${
item.top}px"></span>` } } list = list.filter(el=> (el.top < 200 && el.left < 200)); content.innerHTML = str; } function animate(){
render(); if(list.length > 0){
animating = window.requestAnimationFrame(animate) } } function linear(speed){
return speed; } function quicken(value, speed, factor){
return speed + value * factor; } function easeIn(value, speed, factor, max){
if(value < max/2){
return speed + value * factor; }else{
return speed + ( max - value ) * factor; } } </script>
</body>
</html>
边栏推荐
- 阿里云 Hologres助力好未来网校实时数仓降本增效
- 【项目篇- 项目团队部分怎么写、如何作图?(两千字图文总结建议)】创新创业竞赛项目计划书、新苗国创(大创)申报书、挑战杯创业计划竞赛
- SDUT数据库 SQL语句练习(MySQL)
- exist和in的区别
- 开发者时薪高达1200美元?一文带你走近Move语言的编程魅力!
- 【Opencv】-----倾斜图片转正
- Qihua stores the future and interprets the origin of distributed
- 安装nodejs
- Use Function Compute to package and download OSS files [Encounter Pit Collection]
- HyperLynx(五)反射仿真
猜你喜欢
随机推荐
全新FIDE 编译简单评测
运动健康服务场景事件订阅,让应用推送“更懂用户”
a-upload上传图片
Are there any foreign application cases for domestic databases?
6.1 总线的概念和结构形态
当科学家决定搞点“花里胡哨”的东西
开源汇智创未来 | 软通动力出席开放原子全球开源峰会OpenAtom openEuler分论坛
【翻译】Drafting and Revision: Laplacian Pyramid Network for Fast High-Quality Artistic Style Transfer
微信小游戏是个人尝试做游戏最好的选择
leetcode:373. 查找和最小的 K 对数字
如何设计一组会出现死锁(Deadlock)的ABAP程序
数据库内核面试中我不会的问题(4)
Word小技巧之图表实现自动编号和更新
Starting from zero configuration vim (11) -- plug-in management
darknet 结构体汇总
Notes and Recommendations for Using Logs
go语言学习:并发编程(Sync/GMP/爬虫案例)
3. static成员
09什么是继承
【综合练习12】实现静态网页的相关功能









