分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

js 动画性能分析 transfrom

发布时间:2023-09-06 02:21责任编辑:傅花花关键词:js动画

1、动画实现代码

(1)使用定位实现:

<!DOCTYPE html><html> ???<head> ???????<meta charset="utf-8" /> ???????<title>动画性能分析-left</title> ???????<style type="text/css"> ???????????* { ???????????????margin: 0; ???????????????padding: 0; ???????????} ???????????#box { ???????????????width: 200px; ???????????????height: 200px; ???????????????background-color: aqua; ???????????????position: relative; ???????????????left: 0; ???????????} ???????</style> ???</head> ???<body> ???????<div id="box"> ???????</div> ???????<script type="text/javascript"> ???????????let dd = setInterval(function() { ???????????????var div = document.getElementById("box"); ???????????????var left = div.offsetLeft + 5; ???????????????div.style.left = left + "px"; ???????????????if (left > 500) { ???????????????????clearTimeout(dd) ???????????????} ???????????}, 50); ???????</script> ???</body></html>

(2)使用transform实现

<!DOCTYPE html><html> ???<head> ???????<meta charset="utf-8" /> ???????<title>动画性能分析-transform</title> ???????<style type="text/css"> ???????????* { ???????????????margin: 0; ???????????????padding: 0; ???????????} ???????????#box { ???????????????width: 200px; ???????????????height: 200px; ???????????????background-color: aqua; ???????????} ???????</style> ???</head> ???<body> ???????<div id="box"> ???????</div> ???????<script type="text/javascript"> ???????????let i = 1 ???????????let dd = setInterval(function() { ???????????????var div = document.getElementById("box"); ???????????????div.style.transform = `translateX(${5*i}px)` ???????????????i++; ???????????????if (i > 100) { ???????????????????clearTimeout(dd) ???????????????} ???????????}, 50); ???????</script> ???</body></html>

2、性能分析

(1)打开chrome 控制台的Performance

(2)打开rendering (查看帧率)

对以上2个代码段执行录制

性能结果:

(1)使用定位布局来实现动画的结果为:

(2)使用transform实现动画的效果:

说明:

蓝色(Loading):网络通信和HTML解析
黄色(Scripting):JavaScript执行
紫色(Rendering):样式计算和布局,即重排
绿色(Painting):重绘
灰色(other):其它事件花费的时间
白色(Idle):空闲时间

结论:使用ttransform 实现动画 在重排和重绘的时间上都小于 定位实现动画。transform效果更好

3、帧率

关于帧率,可以设置更小的时间间隔,如下代码(每5ms执行一次):

<!DOCTYPE html><html> ???<head> ???????<meta charset="utf-8" /> ???????<title>动画性能分析-left</title> ???????<style type="text/css"> ???????????* { ???????????????margin: 0; ???????????????padding: 0; ???????????} ???????????#box { ???????????????width: 200px; ???????????????height: 200px; ???????????????background-color: aqua; ???????????????position: relative; ???????????????left: 0; ???????????} ???????</style> ???</head> ???<body> ???????<div id="box"> ???????</div> ???????<script type="text/javascript"> ???????????let dd = setInterval(function() { ???????????????var div = document.getElementById("box"); ???????????????var left = div.offsetLeft + 5; ???????????????div.style.left = left + "px"; ???????????????if (left > 500) { ???????????????????clearTimeout(dd) ???????????????} ???????????}, 5); ???????</script> ???</body></html>

效果:

看起来不卡顿

帧率在60fps时流畅,小于60fps时卡顿(越小月卡顿)。

js 动画性能分析 transfrom

原文地址:https://www.cnblogs.com/mengfangui/p/9934232.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved