- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE1
PAGE1
前端性能优化:减少重绘和重排:使用will-change属性预测重绘与重排
1前端性能优化基础
1.1subdir1.1:理解重绘与重排
1.1.1重绘(Repainting)
重绘是指当元素的外观发生变化,如颜色、背景、边框等,但不涉及尺寸、位置或布局的变化时,浏览器重新绘制该元素的过程。重绘通常比重排的开销小,因为它不需要重新计算布局。
示例代码
!--HTML示例--
divid=myDivstyle=background-color:red;Hello,World!/div
//JavaScript示例
constmyDiv=document.getElementById(myDiv);
myDiv.style.backgroundColor=blue;//引起重绘
在这个例子中,我们有一个div元素,其背景颜色最初设置为红色。当我们将背景颜色更改为蓝色时,浏览器会重绘这个元素,但不会进行重排,因为元素的尺寸和位置没有改变。
1.1.2重排(Reflow)
重排是指当元素的尺寸、位置或布局发生变化时,浏览器需要重新计算布局并重新绘制页面的过程。重排的开销通常比重绘大,因为它涉及到更多的计算和渲染工作。
示例代码
!--HTML示例--
divid=myDivstyle=width:100px;height:100px;Hello,World!/div
//JavaScript示例
constmyDiv=document.getElementById(myDiv);
myDiv.style.width=200px;//引起重排
在这个例子中,我们有一个div元素,其宽度和高度最初设置为100px。当我们将宽度更改为200px时,浏览器需要重新计算布局,这将导致重排。
1.2subdir1.2:重绘与重排的影响
重绘和重排对前端性能的影响主要体现在以下几点:
性能开销:每次重绘或重排都会消耗CPU和GPU资源,频繁的重绘和重排会降低页面的渲染性能。
用户体验:重绘和重排可能导致页面闪烁或卡顿,影响用户体验。
响应时间:重排尤其会增加页面的响应时间,因为浏览器需要等待布局计算完成才能继续渲染其他元素。
1.3subdir1.3:优化重绘与重排的策略
1.3.1使用will-change属性
will-change属性是一个CSS属性,用于告诉浏览器哪些元素可能在未来的交互中发生变化,从而让浏览器提前优化这些元素的渲染。这可以减少重绘和重排的次数,提高性能。
示例代码
!--HTML示例--
divid=myDivstyle=will-change:transform;Hello,World!/div
//JavaScript示例
constmyDiv=document.getElementById(myDiv);
myDiv.style.transform=translateX(100px);//由于提前声明了will-change,浏览器优化了此操作
在这个例子中,我们使用will-change属性提前告诉浏览器myDiv元素的transform属性可能会发生变化。当我们在JavaScript中实际改变transform属性时,浏览器已经做好了优化准备,从而可能减少重排的次数。
1.3.2利用requestAnimationFrame
requestAnimationFrame是一个API,用于在浏览器的下一次重绘之前执行动画。这可以确保动画在浏览器的最佳时间点执行,避免不必要的重绘和重排。
示例代码
//JavaScript示例
constmyDiv=document.getElementById(myDiv);
functionanimate(){
myDiv.style.left=`${parseInt(myDiv.style.left)+1}px`;
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);//开始动画
在这个例子中,我们使用requestAnimationFrame来平滑地移动myDiv元素。这确保了动画在浏览器的重绘周期内执行,避免了不必要的重绘和重排。
1.3.3避免使用昂贵的CSS属性
某些CSS属性,如border-radius、box-shadow和opacity,在改变时会触发重绘或重排。尽量避免在性能敏感的元素上使用这些属性,或者使用will-change属性来优化它们。
1.3.4利用层叠
您可能关注的文档
- 前端框架和库:D3.js:D3.js与数据处理.docx
- 前端框架和库:D3.js:D3.js与响应式设计.docx
- 前端框架和库:D3.js:D3.js中的动画与过渡.docx
- 前端框架和库:D3.js:D3.js中的色彩与样式.docx
- 前端框架和库:D3.js:SVG图形绘制基础.docx
- 前端框架和库:D3.js:数据绑定与更新模式.docx
- 前端框架和库:D3.js:数据可视化基础理论.docx
- 前端框架和库:D3.js:数据可视化中的交互技术.docx
- 前端框架和库:D3.js:轴与刻度绘制.docx
- 前端框架和库:jQuery:jQueryAjax请求与数据处理.docx
- 前端性能优化:减少重绘和重排:图片优化:减少重绘与重排的策略.docx
- 前端性能优化:减少重绘和重排:异步渲染与requestAnimationFrame详解.docx
- 前端性能优化:减少重绘和重排:优化JavaScript:避免强制同步布局.docx
- 前端性能优化:减少重绘和重排:字体加载与优化:避免FOIT与FOUT.docx
- 前端性能优化:减少重绘和重排的布局算法与技巧.docx
- 前端性能优化:懒加载:CSS懒加载策略与实践.docx
- 前端性能优化:懒加载:JavaScript懒加载技术详解.docx
- 前端性能优化:懒加载:懒加载原理与实现机制.docx
- 前端性能优化:懒加载:懒加载在移动端的优化策略.docx
- 前端性能优化:懒加载:视频懒加载优化技巧.docx
最近下载
- (高清版)DB43∕T 140-2023 造林技术规程 .pdf VIP
- 2025广东汕尾市海丰县纪委监委招聘政府聘员6人笔试参考题库附答案解析.docx VIP
- 飞机构造基础 液压源 液压源的组成(二).pptx VIP
- 正元地下管线数据处理系统用户手册(Zyspps Ver5.0).pdf
- 概率论与数理统计教程(第2版) 茆诗松全套PPT课件.ppt
- 瑶族舞曲(管弦乐)总谱.pdf VIP
- DCS控制室全操作规程.docx VIP
- 爱立信5G四期产品及建设方案介绍.pdf VIP
- 统编版八年级上册语文第一单元第2课《中国人首次进入自己的空间站》教学课件(新教材).pptx
- 《汽车鉴定与评估》全套课件.pptx VIP
文档评论(0)