当前位置: 首页 > news >正文

国外免费网站贸易平台前十名工艺品网站模板

国外免费网站贸易平台前十名,工艺品网站模板,东莞贸易公司寮步网站建设价格,wordpress 腾讯云存储1)requestAnimationFrame是什么? 1.MDN官方解释 2.解析这段话: 1、那么浏览器重绘是指什么呢? ——大多数电脑的显示器刷新频率是60Hz,1000ms/6016.66666667ms的时间刷新一次 2、重绘之前调用指定的回调函数更新动画? ——requ…
1)requestAnimationFrame是什么?
1.MDN官方解释

在这里插入图片描述

2.解析这段话:

1、那么浏览器重绘是指什么呢?
——大多数电脑的显示器刷新频率是60Hz,1000ms/60=16.66666667ms的时间刷新一次
2、重绘之前调用指定的回调函数更新动画?
——requestAnimationFrame 会把每一帧中的所有 DOM 操作集中起来,在一次重绘或回流中 紧跟随浏览器的刷新频率 去完成操作。

2)基础用法
<script setup>
let animationRef
const goStart = () => {const cb = () => {// 写入DOM 操作会在每一次浏览器刷新之前执行❤requestAnimationFrame(cb)}// 开启动画animationRef = requestAnimationFrame(cb)
}
const goEnd = () => {// 取消动画cancelAnimationFrame(animationRef)
}
</script>
3)requestAnimationFrame的优点
1.传统实现JS动画

通常情况下,实现动画能使用css实现的就使用css,不能的css实现的再使用JS实现。
我们实现JS动画,会使用setTimeout和setInterval。
而setTimeout和setInterval的使用是存在问题的,导致丢帧。

①间隔时间不好确定,前面也提到大多数电脑的显示器刷新频率是60Hz,1000ms/60,定时器的间隔时间设置过长或者过短都无法匹配上刷新频率,推荐的最佳循环间隔17ms。
②MDN指出定时器实际延长时间比设定值长一些。常见的几种情况,嵌套超时、非活动标签的超时、追踪型脚本的节流、超时延迟等…一个浏览器的线程队列中任务
这里就不过多赘述,可以到以下链接阅读 https://developer.mozilla.org/zh-CN/docs/Web/API/setTimeout
在这里插入图片描述

其实就是当线程忙碌时,定时器会等待线程队列中的任务执行后再执行。
所以定时器动画,视觉上看来,就是一盹一盹…的效果。

2.requestAnimationFrame

而requestAnimationFrame由浏览器专门为动画提供的 API,就是为了解决这类问题,提升用户体验的。
且我们切换到其他页面时,requestAnimationFrame会暂停下来,直到我们回到该页面后,动画会从暂停的位置继续执行。

3.应用场景

在这里插入图片描述
会用一定卡顿,可以到我的github下载代码运行看效果。
https://github.com/wwaini/tao-vue3/tree/release240625

<template><div class="btn"><el-button @click="goStart">开始</el-button><el-button @click="goEnd">停止</el-button></div><div class="a-box">定时器</div><div class="b-box">requestAnimationFrame</div>
</template>
<script setup>
import { ref } from 'vue'
let leftNum = ref(0)
let flag = ref(false) // 定时器动画停止标识
let timmer // 定时器
let animationRef // requestAnimationFrame存储
// 定时器动画事件
const goAStart = () => {let dom = document.getElementsByClassName('a-box')dom[0].style.width = '10px'timmer = setInterval(() => {leftNum.value = parseInt(dom[0].style.width)if (leftNum.value > 800 || flag.value) {clearInterval(timmer)} else {dom[0].style.width = (leftNum.value + 3) + 'px'console.log(dom[0].style.width);}}, 17);
}
const goAEnd = () => {clearInterval(timmer)
}
// requestAnimationFrame动画事件
const goBStart = () => {let dom = document.getElementsByClassName('b-box')dom[0].style.width = '10px'const cb = () => {leftNum.value = parseInt(dom[0].style.width)if (leftNum.value > 800) {} else {dom[0].style.width = (leftNum.value + 3) + 'px'console.log(dom[0].style.width);// 相当于递归执行animationRef = requestAnimationFrame(cb)}}// 执行动画requestAnimationFrame(cb)
}
const goBEnd = () => {// 停止动画cancelAnimationFrame(animationRef)
}const goEnd = () => {goAEnd()goBEnd()
}
const goStart = () => {goAStart()goBStart()
}
</script><style scoped lang="scss">
.btn {text-align: center;margin-bottom: 20px;
}.a-box {width: 20px;height: 80px;background-color: pink;position: absolute;
}.b-box {width: 20px;height: 80px;background-color: blueviolet;color: #fff;position: absolute;top: 120px;
}
</style>
4)requestAnimationFrame兼容性

对比

http://www.yayakq.cn/news/291558/

相关文章:

  • 新建网站求友链平台网站的建设思想
  • 免备案空间网站html代码颜色表
  • 怎么做福利视频网站怎样修改网站首页头部
  • 网站建设发布网站建设小组的五类成员
  • 软件技术跟网站开发有关系吗品牌建设典型案例和品牌故事
  • 网站备案要先怎么做苏州正规制作网站公司
  • 上海优化网站关键词网站内容策划书
  • 北京企业网站建设电话网站更改模板 seo
  • 网站开发用户登录前 登录后东莞保安公司排名前十
  • 哪个做问卷网站佣金高百度门户网站
  • 爱站网能不能挖掘关键词如何看出网站用dede做的
  • 微信怎么做自己的网站ps制作个人网站首页
  • 建设银行联号查询网站90后做网站
  • 湖南衡阳网站建设杭州网站如何制作
  • 一个企业网站做几个关键词搭建之星
  • 成都建站网址云南省建设项目申报网站
  • 做网站前端需要懂得网站建设冖金手指花总十四
  • dw做的网页在网站图片不显示网站建设珠海 新盈科技公司
  • html网站 下载学网站开发学费多少
  • 哪个网站可以免费做国外网站建设公司的性质
  • 哈尔滨网站网站建设重庆市工程建筑造价信息网
  • 厦门免费网站建设呼叫中心系统价格
  • 美业网站辽宁建设工程信息网分数
  • wordpress开启子目录多站点模式firefart wordpress
  • 网站建设哪个语言好装饰网站建设专家
  • 南宁免费建站系统建德市住房和城乡建设局网站
  • 网站站内的seo怎么做私域直播平台有哪些
  • 游戏网站模板免费下载在线生成logo设计
  • wordpress 网站内跳转信贷网站建设
  • 南充建设机械网站最差网站设计