网页div空白vs隐藏

时间:2015-10-04 22:43:43

标签: javascript jquery html web

如果2个<div>元素都有相当数量的图形内容且一次只显示一个,那么隐藏一个未显示的元素或清空它并再次重新插入html标记会更好吗?

当你隐藏时,一切都留在记忆中吗?

1 个答案:

答案 0 :(得分:1)

答案很可能是:它取决于。

作为人类,我们在不同操作的性能方面有一些定位,但在这种情况下,当您不确定时,最佳实践是估计和基准。我们的想法是了解每种方法的妥协方式:

首先,更容易,是对隐藏div的内存影响进行基准测试。请注意,隐藏<div>保留在内存中,但不会在页面中呈现,因此内存占用量小于呈现元素。即使只使用chrome任务管理器,也可以轻松完成测量。检查两者之间的多个更改,并在使用每种方法时测量内存占用量。是否真的像你期望的那样重要?

第二个,稍微复杂一点:衡量重新加载和重新呈现客户端系统的影响,以及应用程序的用户体验。最好是使用WEAK机器,甚至可能是连接速度慢。测量所创建的延迟(如果没有),如果不使用代码和报告,至少根据您的感觉,并尝试测量CPU峰值和处理减速(如果有的话)。在缓慢和快速的方式之间多次切换div。它仍然感觉光滑吗?

在这种情况下,我倾向于猜测内存占用量比你想象的要小得多,但这只是我的经验。我相信隐藏和显示将比清空和重新加载需要更少的努力。

那就是说,我确信两者都做了之后,你可能会非常清楚你的正确方法是什么。隐藏如果内存占用很小,重新加载,如果它太大,值得重新加载的速度慢。只有你可以测量和计算线的位置。

附注:隐藏时,最佳做法是使用display:none;。这样可以确保从渲染树中删除 元素,从而提供比opacity: 0; / visibility: hidden;更好的性能,但如果您需要其中一个用于特定功能,请使用它们。如果您不需要该功能,请使用display: none;。另请注意,jQuery的.hide()使用display: none;,因此这是最佳做法。来自jQuery .hide()文档:

  

这大致相当于调用.css(“display”,“none”)

来源: