如果2个<div>
元素都有相当数量的图形内容且一次只显示一个,那么隐藏一个未显示的元素或清空它并再次重新插入html标记会更好吗?
当你隐藏时,一切都留在记忆中吗?
答案 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”)
来源: