童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

瀑布流布局的开发实践

9月5日 浅时光投稿
  瀑布流的布局方式展现的内容通常是扁平化、琐碎的东西。首先吸引人的应该是图片,并且图片是那种参差不齐的,如果瀑布流中文字过多,会给人很杂乱的感觉,所以瀑布流更适合单纯的图片浏览。
  前不久360公司上线的项目360图片搜索的美女秀场频道,就用到了瀑布流的布局方式,这种纯粹的看美女图片的页面用瀑布流还是挺合适的。
  以前并未开发过瀑布流布局的网站,第一个想到的实现方式就是多列浮动,从表面上看这种方式要简单。
  传统的定位布局方式
  但是,目前主流的瀑布流布局都是采用定位的方式,对每个单元格计算定位值,如下图:
  定位的方式实现起来其实也简单,在窗口resize时,也可以方便的对单元格进行重新计算排序。但是计算的频率比较高,如果要做无限的加载数据,以及resize时的自适应排列,那么性能就是一个必须要重视的问题。
  如果没有任何优化手段,成百上千个单元格本身就很耗资源,resize时再全部重新计算一遍,可以想象浏览器在这个时候一定很吃力,必然会有浏览器假死的情况。
  多列浮动的布局方式
  再来看看多列浮动布局的实现方式,多个单元格组成一列,无需对单个的单元格进行定位的计算,然后对整列进行浮动,如下图:
  当然,这种布局方式在无限加载和resize时的自适应面前,面对着同样的问题。
  自适应窗口
  先说resize时的布局自适应,虽然浮动布局的计算没有定位那么方便,但要实现自适应的布局还是可以的。比如原来有4列,resize时页面宽度变小了,只能放3列了,单元格的总数是不变的,数据的顺序也是固定的,那么只有把原来4列里面的单元格全部清空,按照数据的顺序重新计算排序,依次添加到3列中。需要注意的是清空的时候并不是把单元格的DOM元素给删除掉,而是从DOM树提取出来存放在一个文档碎片中,这样就避免了每次都要去创建单元格的DOM元素,节省了创建时的性能开销,说得通俗点就是离线操作。
  无限加载的挑战
  浏览器中运行的WEB程序并不能像桌面软件那样会有足够多的CPU和内存去使用。当网页中的DOM元素的数量呈指数倍的增长,那么其占用的内存也势必会成正比的增长,每个DOM元素都会有性能开销,只是通常情况下DOM的数量并没有达到需要注意型性能的那个阙值。
  无限加载的瀑布流就必须要注意这种由于DOM数量庞大而引发出来的性能问题。不能抱着侥幸的心理去认为用户可能滚动不了多长就会跳出。此次做的瀑布流布局的项目压根就没有内页,都是浮层直接展示大图,虽说在一定程度上方便了用户,但同时也给浏览器端很大的性能压力。用户如果不需要跳转一直停留在瀑布流的列表页,只要不关闭这个页面,内存就会一直没有释放的机会。
  虽然页面可以无限长,但是用户的显示器的可视区域是有限的,就好比一个再富有的人,他晚上睡觉时占的面积还是那么大,床的面积也是有限的。由于可视区域是有限的,通常会利用这一点对没加载的DOM元素作延迟加载,那么反过来,能否对已加载的但不在可视区域的DOM元素做文章呢?答案是肯定的,人有多大胆,地有多大产嘛。
  当页面向下滚动的时候,瀑布流会创建新的单元格,老的单元格就会随着页面的向下滚动而处于非可视范围,既然都不可见了,那么为了节省性能完全可以把这些老单元格删除掉。当然,也要有技巧性的去删除。如果页面往上滚,滚回去的时候你总不能给用户看白板,不能这样坑人。那么原来删除的还得保持原位置加回去。不悠着点的话,光是这样一删一加的两个动作就够浏览器受的了。作为WEB开发者,要时刻都有浏览器是很脆弱的如芒在背的心理。
  分组操作
  上面说到的有技巧性的删除就是将那些处于非可视区域的DOM元素从DOM树中提取出来,存储在一个文档碎片的容器中。DOM元素脱离了DOM树也会大大节省性能的开销,这样就达到了节省性能的目的。当然如果仅仅只做到这一步还不太好意思说是技巧。正是因为这个,我将HTML结构再包裹一层,在ul外面添加了一个div,称之为一组,其真实结构如下图所示。
  在这里,组是比列更大的单位,一组可以是可视区域大小的尺寸(目前组还没精确到针对不同的分辨率),一组里面就是浮动的自适应屏幕分辨率的几列,每列里面就是一个个的单元格。如上图,这样几列就可以组成一组。有了组就可以比较方便的将频繁出入于DOM树中的DOM元素的性能开销平衡的分配到每一组。可以在页面滚动向下到指定的位置,只删除某一组,继续向下滚再继续删除。每次都删除处于最顶端的那一组,因为是在非可视区域内,用户也不会知道你的删除操作。
投诉 评论

网站用户体验要点(一)关于体验约瑟夫。派恩和詹姆士。吉尔摩在《体验经济》一书中提出其观点:所谓“体验”就是企业以商品为道具,以服务为舞台,以顾客为中心,创造出可以使消费者全面参与、让消费……浅析Banner设计当今,无论任何一款互联网产品,都需要搭载PC平台进行推广,Banner更是推广的一大利器,怎么将Banner设计好就成为一个需要探讨研究的课题。Banne……追寻点击愉悦感提升网站平板体验的6个技巧在这篇文章发布时,仅在美国就有近70万的平板电脑用户,这比前一年的数据增加了一倍。这意味着,美国近30的互联网用户使用平板设备上网浏览。2011年到2012年间,电子……论一个好的交互设计师如何养成成长可以是一种好玩又有意义的体验设计,身为交互设计师,你正好能可以利用你的专长,给自己设计一个合适的学习体验。了解自己的学习特性一个好的交互设计师往往了解自己学东西……瀑布流布局的开发实践瀑布流的布局方式展现的内容通常是扁平化、琐碎的东西。首先吸引人的应该是图片,并且图片是那种参差不齐的,如果瀑布流中文字过多,会给人很杂乱的感觉,所以瀑布流更适合单纯的图片浏览。……浅谈交互式UI设计指南Web开发社区有着大量的交互式设计轻松解决方案。虽然现在大多数网站都能够做到交互性了,但是我们需要不断向前、创新。我们很容易将注意力集中到编码方……手Q微信:内部竞争与手足相残的微妙边界手机QQ已开启腾讯经典模式如同虎嗅之前预测,腾讯正在用生命山寨腾讯。用腾讯内网推荐的一篇生活电商团队成员写的文章说法,手Q是走上了“正确和光明的道路”。可以直言不讳地说,……聊聊那些有趣的交互设计〔核心提示〕那些“酷”的创造,并不一定就“好”,但值得书写。又有什么,能比创造更激动人心的呢?前言:这篇文章是关于那些让足以让我们热泪盈眶的、富于想象的发明和激……交互设计师,你要懂视觉推荐理由:作者Danis2010。交互设计师之所以要懂得视觉语言,主要体现在原型制作的工作部分,因为输出的虽然是低保真原型,但低保真原型的设计过程其实也是一个视觉化过程。……滚动视差设计指南作为未来网页设计的热点趋势之一的“滚动视差”在近年来被越来越多网站所采用,特殊新颖的展示模式也让许多用户眼前一亮。网络上也如雨后春笋一般出现了很多像《30个让人兴奋的视差滚动网……设计有效的“用户行为与反馈效应”循环本文作者LorenBaxter,一名交互设计师,译者C7210。无论你在设计怎样的产品,总会涉及到“用户行为与反馈效应”这样的循环。很多时候,良好而有效的“反馈……让视觉营销,传达品牌的力量(Lite)这个一个Lite版本的PPT,今天我把它转成日志和大家一起交流,我也正着手书写完整版本的PPT,也期望能尽快和大家分享我更多的idea。今天和大家分享的是视觉营销和品牌传……
用户体验这样做更加好网站优化需要注意的六个小细节3个步骤快速提高seo反链质量常见的5种SEO赚钱方法小白可以这样正确学习seo(图文)网页设计与构架中的SEO优化原则2018年草根站长做SEO新型思维及技巧新站这样做seo网站优化更加好刷相关搜素的原理与代码技巧搜索引擎优化技巧总结谈谈主流CMS系统代码优化方式浏览器兼容效果是印象加分的关键点下雪了小树像什么房子像什么山像什么下雪了小树像啥房子像傻山像贵妇膏可以天天用吗贵妇膏也需要注意这些问题每日新报强队不受限,U23政策对弱队不公平海南成功繁育只狮虎狮兽打破不能生育说法披荆斩棘三公结果公布,大湾区流量密码失效,投票淘汰李云迪小学作文300字文明在我身边t恤长霉斑怎么洗掉t恤长霉斑如何清洗粑粑柑可以蒸熟吃吗月子期里五大重点,好百邻月嫂来告诉你互助做商业保险和社保的补充安庆大山深处,发现一座300多年老屋,十分破败令人惋惜那该造句用那该造句大全

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界