display:none 和 remove dom 哪个更影响性能
比如:
在向上滚动屏幕的时候,将可视界面下的item节点remove掉或者display:none, 用哪种方式更合适?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如:
在向上滚动屏幕的时候,将可视界面下的item节点remove掉或者display:none, 用哪种方式更合适?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
两种方法其实都不好
无论是remove 还是display:none 都会导致界面高度变化,尤其是想上滚动的时候,界面缩短的赶脚实在欠揍。
在主要影响性能方面,
无论是PC端还是手机端,100个dom跟200个dom性能没有多大差别的。
但是在手机端,100个图片跟200个图片绝对有性能差别。
避免太多的图片即可或者
下面比较复杂的方案类似于http://ionicframework.com/docs/api/directive/collectionRepeat/
这个主要看你还会不会在加回来啊,不加回来可以remove掉,还要再显示 肯定是display的方式更好
题主是要做无限长度的列表?正好昨天也在看。
手机淘宝的搜索列表页就是个无限列表(其实也不是无限的。最多100页),手机淘宝的做法ul里面有若干个div,一个div中有若干个li,一个li就是一个item,当超出一定的可视范围时,移除掉div中的内容,同时给div设置固定高度。
Airbnb在2012年开源了一个js的无限列表库Infinity.js。和手机淘宝不同的就是不支持滚动到指定位置。
这个涉及到重排和重绘的问题,这都是比较耗费性能的。当然可以根据需求来(取舍)优化一些。列举一些:
1.尽量在最末尾的位置改变元素。
2.dom不要嵌套太深
3.不要使用太多table