JS动画卡顿分析_学会java就能自己设计软件吗

JS动画卡顿分析_学会java就能自己设计软件吗文章目录动画卡顿分析及解决方法一、卡顿原因分析二、优化的一些方法动画卡顿分析及解决方法一、卡顿原因分析我们所使用的设备大多数的刷新频率都是60HZ,也就是每秒钟会有60个画面来组成一个完整的动画来进行展示。这就要求我们的浏览器对每一帧动画的渲染都在16ms内完成(1秒等于1000ms),一旦渲染时间超过了这个时间段,用户在观看时就会感觉到卡顿。通常,一般人可以分辨的频率也在60HZ左右,所以经常会有人提起打游戏时卡顿,也就是游戏掉帧。二、优化的一些方法1.JavaScript的相关优化:优化Jav

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

动画卡顿分析及解决方法

一、卡顿原因分析

我们所使用的设备大多数的刷新频率都是60HZ,也就是每秒钟会有60个画面来组成一个完整的动画来进行展示。这就要求我们的浏览器对每一帧动画的渲染都在16ms内完成(1秒等于1000ms),一旦渲染时间超过了这个时间段,用户在观看时就会感觉到卡顿。通常,一般人可以分辨的频率也在60HZ左右,所以经常会有人提起打游戏时卡顿,也就是游戏掉帧。

二、优化的一些方法

1.JavaScript的相关优化:优化JavaScript的执行效率

  • 使用requestAnimationFrame代替setTimeoutsetInterval

requestAnimationFrame是window对象的一个方法,他会告诉浏览器执行一个动画,并要求浏览器在下次重绘之前调用指定的回调函数更新动画。

具体参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestAnimationFrame

js是单线程执行,所以为了避免一些执行时间过长的任务会阻塞整个任务的执行,js中引入了异步队列的概念。执行程序是会首先执行主任务队列中的代码,当主任务队列为空时才执行异步队列中的任务。所以 setTimeoutsetInterval无法保证回调函数的执行时机,可能会在一帧之内执行多次导致多次页面渲染,浪费CPU资源甚至产生卡顿。

  • DOM无关的耗时操作放到Web Worker中

Web Worker的作用在于为JavaScript创建了多线程环境,Web Worker线程在后台运行,受主线程控制,两者互不干扰。Web Worker线程负担高延迟且UI无关的任务,主线程负责UI交互就会相对流畅。

2.降低样式选择器的复杂度,减少需要计算样式的元素个数

3.使用flex布局替代原有的老式布局。

flexbox布局更加高效。在能用flexbox布局的项目中,尽量用flexbox布局。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183330.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webstorm2021.10激活码mac[最新免费获取]

    (webstorm2021.10激活码mac)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    235
  • 浓缩就是精华「建议收藏」

    浓缩就是精华「建议收藏」 『凡人牧场』人生启示录:被称为世上最经典的25句话(转载)   作者:晶晶鱼 提交日期:2003-12-3115:32:40    1,记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。      2,能冲刷一切的除了眼泪,就是时间,以时间来推移感情,时间越长,冲突越淡,仿佛不断稀释的茶。      3,怨言是上天得至人类最大的供物,也是人

    2022年6月29日
    19
  • Intellij IDEA 设置字体大小

    Intellij IDEA 设置字体大小一、通过设置字体size改变字体File—>settings(ctrl+Alt+s)—>Editor—>Font—>size  设置字体大小—>Apply—>ok 即可二、利用鼠标调整字体大小File—>settings(ctrl+Alt+s)—>Editor—>General  右边的cahnge font…

    2022年6月13日
    78
  • python数字转字符串固定位数_python-将String转换为64位整数映射字符以自定…「建议收藏」

    python数字转字符串固定位数_python-将String转换为64位整数映射字符以自定…「建议收藏」您将4个不同“数字”的字符串解释为数字,因此以4为基数.如果您有一串实际数字,范围为0-3,则可以让int()真正快速地生成一个整数.defseq_to_int(seq,_m=str.maketrans(‘ACGT’,’0123′)):returnint(seq.translate(_m),4)上面的函数使用str.translate()用匹配的数字替换4个字符中的每个字符(我使用静态s…

    2022年9月25日
    0
  • 工具说明书格式_lastingfor什么药

    工具说明书格式_lastingfor什么药下载安装:Downloads-DBBrowserforSQLitehttps://sqlitebrowser.org/dl/下载64位安装版:DB.Browser.for.SQLite-3.12.2-win64.msiZip文件是免安装解压缩版,PortableApp是一个exe文件打包版。安装完,打开后是这个样子:点击上面红框处,新建一个database,选择路径,输入文件名,保存即可。在SQLite里,一个database就是一个后缀db的文…

    2022年9月8日
    0
  • python判断文件后缀_Python 判断文件后缀是否被篡改

    python判断文件后缀_Python 判断文件后缀是否被篡改自己用Python写了个对文件后缀判断的脚本,目前支持的文件类型还不是很多,还有待完善。支持MicrosoftOffice(.pptx.docx.xlsx)Pyhton版本为3.6#!usr/bin/envpython#-*-coding:UTF-8-*-#@Time:2018/7/1015:16#@Author:gumguiimportstructimportos,sy…

    2022年9月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号