我正在开发一个 Web 应用程序,动态显示一些控件和描述(我不想使用 jQuery 或其他库)。
此时我使用以下方法使控件出现和消失:
element.setAttribute("style", "display : inline");
and
element.setAttribute("style", "display : none");
但我正在考虑使用:
element.appendChild(childRef);
and
element.removeChild(childRef);
那么,就系统速度和代码优雅而言,哪一种是最佳解决方案呢?
或者有更好的方法来解决这个问题吗?
element.appendChild(childRef);
and element.removeChild(childRef);
两者都使浏览器能够操作 DOM 树,而更改 CSS 只是更改其中一个属性。
所以,改变 CSS 会更快。
开发歌剧 http://dev.opera.com/articles/view/efficient-javascript/?page=3 says
当元素的显示样式设置为 none 时,即使其内容发生更改,也不需要重新绘制,因为它没有被显示。这可以作为一个优势。如果需要对某个元素或其内容进行多次更改,并且无法将这些更改组合到单个重绘中,则可以将该元素设置为 display:none,可以进行更改,然后可以设置该元素回到正常显示。
这将触发两次额外的回流,一次是当元素隐藏时,一次是当它再次出现时,但总体效果会快得多
另一篇相关文章 http://www.ajaxlines.com/ajax/stuff/article/css_performance_making_your_javascript_slow.php解释关于reflow
and repaint
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)