js解决方案,以防止闪烁时,div布局滚动

js解决方案,以防止闪烁时,div布局滚动
本文以js为例,防止div滚动flash的布局方法,供大家分享,供大家参考。具体方法如下:

最近出现在页面性能上的东西有很多微妙和原始的内容,比如浏览器渲染。数据非常大,所以选择做一些摘录,备忘录。

javascript多次写入和读取DOM,布局颠簸

复制代码如下:从DOM树)。

读取

VaR H1 = element1.clientheight;

写(布局空白)

element1.style.height =(H1×2)+ 'px;

读(触发器布局)

VaR H2 = element2.clientheight;

写(布局空白)

element2.style.height =(H2×2)+ 'px;

读(触发器布局)

VaR H3=element3.clientheight;

写(布局空白)

element3.style.height =(H3×2)+ 'px;

当DOM被写入时,布局被放弃,它需要在某个时间点重新安排。但是浏览器是懒惰的,它希望等到当前的操作(或框架)完成并重新排列。

但是,如果我们在当前操作(或框架)结束之前从DOM读取几何值,我们将迫使浏览器提前安排布局。这就是所谓的强制同步布局,将执行绩效的生活。

在现代桌面浏览器中,布局凹凸的副作用可能并不明显;但在低端移动设备上,问题非常严重。

快速解决方案

在理想的世界中,只要我们简单地重新排列代码执行顺序,我们就可以批量读取DOM并在批处理中写入DOM,这意味着文档只需要重新排列一次。

将代码复制如下:

VaR H1 = element1.clientheight;

VaR H2 = element2.clientheight;

VaR H3=element3.clientheight;

写(布局空白)

element1.style.height =(H1×2)+ 'px;

element2.style.height =(H2×2)+ 'px;

element3.style.height =(H3×2)+ 'px;

在框架/重排中的文档结尾处

真实的世界是什么

实际上,这并不容易。在大型程序中,代码到处传播,所有的代码都有这种危险的DOM。我们不能很容易(显然不应该)用一段代码来解耦我们的美丽,只是为了控制执行顺序。因此,为了优化性能,我们如何处理批读和写

要知道requestanimationframe

window.requestanimationframe安排功能在下一帧执行,类似于settimout(FN,0)。这是非常有用的,因为我们可以用它来安排所有的DOM的写操作在下一帧,和DOM读取操作在当前的顺序执行。

将代码复制如下:

VaR H1 = element1.clientheight;

写入

RequestAnimationFrame(function(){()

element1.style.height =(H1×2)+ 'px;

});

读取

VaR H2 = element2.clientheight;

写入

RequestAnimationFrame(function(){()

element2.style.height =(H2×2)+ 'px;

});

......

希望这篇文章将帮助大家基于Javascript的Web程序设计。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部