`
从此醉
  • 浏览: 1047038 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

分页显示该休矣

 
阅读更多

当你有很多东西要显示给用户、而且内容多得远非一个屏幕可以放得下的时候,你会怎么办?很自然,你会想到分页。

在2007年,Vitaly Friedman写了一篇文章叫“Pagination Gallery: ExamplesAnd Good Practices”(分页艺术馆:样例赏析以及好的做法)。他在这篇文章里罗列了现实世界里的很多例子,在这里我就不再赘述了。如果你看过一种分页方案,其实你也就看过了所有的方案。因为在过去5年的时间里,分页技术没有太多实质的变化(或者说根本就没有变化)。

当你有10个、50个、100个、甚至几百个条目要显示的时候,我能够理解你要使用分页技术。但是,如果说你有几千个条目要分页,那就见鬼了——谁会去访问3810页里的第964页?实际上,人们在一段合理长度的时间里能够阅读和处理的信息是很有限的。那么,你把这么多内容分页显示给他们又有什么意义呢?

一旦你有几千条信息,你要解决的不是分页问题,而是搜索和过滤的问题。我们为什么要给用户展示成百上千条信息?你想达到什么目的?在理想情况下,每次搜索都应该只返回一个结果——那个结果就是你真正想要找的东西,并且在一页之内就能完全显示。

但也许你不是很确定你要找什么:也许你想得到很多观点和资源来做参考,或者在几个相似的东西之间进行一番比较。这很正常!但即使在这样的情况下,呈现100条左右的信息也应该绰绰有余了。你自然还得使用合理的方法给它们排序,以使最匹配的条目显示在越靠近页面顶部的位置。

一旦你挑选了一个密切相关的结果子集、并且选择了一种合理的排序方法,你究竟还要不要分页显示呢?试试一种所谓的无穷分页法如何?也就是当用户看到页面底部的时候动态地加载更多的内容,像下面这段视频展示的那样:

译者注:这段视频的网址是:http://www.youtube.com/watch?v=bwzBCm2oSuw

这并不像“去元音化”那样是一种古怪的做法。事实上,Twitter的时间线和Google的图片搜索服务都使用了相似的无穷分页法。他们要么在用户将页面滚动到底部的时候自动加载更多的内容,要么在页面底部放置一个“显示更多结果”的按钮(用户只要一按就会有更多的内容呈现出来)。

译者注:互联网令人称道之处在于,人们无论想什么就能说什么。当然,这也是互联网的一个遭人诟病的缺陷,因为博客和其他在线论坛上的评论有时让人气愤不已,更别提充斥着仇恨和的语言了。如何在毫无约束的放纵和令人窒息的监管之间找到一个合适的平衡点?有些人已开始轻松化解这个问题——将元音从单词中删除,这一过程称为去元音化disemvoweling)。元音被删除的文字就不那么令人厌恶了,而且其他读者仍可以读懂它的意思。这项修辞术还被美国《时代》周刊评选为全球范围内的2008年度50项最佳发明之一。

分页还是一种摩擦阻力。你有没有见过这样的论坛:在那里,你希望其他人在回复之前拼命读完整整4页的内容?好吧,如果进入“下一页”的按钮不是那么小得可怜的话,或者更好的情况,“下一页”按钮根本就不存在(因为那个论坛使用了无穷分页法),有些人也许会有耐心读完所有的内容。如果我们想让用户做更多的事情,我们就应该积极为他们消除阻力。

我并不是建议大家把所有传统的分页方法都替换成无穷分页法。但作为软件开发者,我们应该避免没头没脑地生成一个包含有成千上万个条目的列表,然后用“一刀切”的方法把它们分页显示出来。这把所有的负担都扔给了用户。这是不合理的!记住,我们发明电脑是为了让人们的生活变得更轻松,而不是变得更艰难。

如果你明白了这些,那接下去就有一个“平衡”的问题,正如Google的研究报告所述:

根据测验结果表明,用户对于搜索结果更喜欢“一页显示全部”的风格,而不是把内容生硬地分成很多页、每页只显示其中一部分的方式。

有趣的是,那些不喜欢“一页显示全部”的用户给出的原因是,他们担心因此会引起长时间的延迟(举例来说,假设页面里包含有很多图片,那么完整显示一页内容所需的载入时间必然会长一点)。这是可以理解的,因为我们知道用户对缓慢的速度会很介意。因此,尽管用户普遍喜欢“一页显示全部”的风格,但网站管理员还是很有必要在这种用户偏好与网页载入时间以及整体用户体验之间做出适当的平衡。

传统的分页方法对于用户来说不是特别友好,但无穷分页法也不是完美无瑕的——它也有自身的缺点和陷阱:

  • 滚动条作为用户判断“剩下还有多少内容?”的指示器,它在采用无穷分页法的情况下就失去了这个功效,因为页面内容实际上已是无穷多了。你需要一种替代的方法来给用户提供这个关键信息——也许你可以让一些文字驻留在页面底部,指示内容已经加载的百分比。
  • 无穷分页法不应该破坏深度链接。即使没了“页”的概念,用户也应该能够干净利落地链接到列表里的任何一个特定的条目。

译者注:深度链接(Deep Linking)是一种绕过被链网站首页而直接链接到其内容分页的链接方式。

  • 如果用户点击浏览器的前进或后退按钮,此时应该保存用户在滚动过程中所处的当前位置。这也许可以用pushState来实现。
  • 传统的分页方法也许在用户体验方面比较糟糕,但它很受“网络蜘蛛”的青睐。不要忽视用传统的分页方案去迎合网络搜索引擎。或者你可以使用一个站点地图。

译者注:网络蜘蛛(Web Spider)是一个抓取网页的“机器人”程序。它是一个很形象的名字,如果把互联网比喻成一张蜘蛛网,那么这个“机器人”程序就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的,从网站的某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其他链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以通过这个原理把互联网上所有的网页都抓取下来。

  • 当你往列表里动态加载新条目的时候,请提供一些用户看得见的反馈信息,这样他们就能自己判断出“内容还没有完,还有新的内容正在被加载,浏览器没有死掉……”。
  • 记住,用户将再也无法触碰到页脚(或页眉),因为当他们把页面滚下去的时候新条目不断地冒出来,内容越来越长,就像一条没有尽头的河流。因此,你要么把页眉和页脚做成静态的,要么就用放置一个“载入更多内容”的按钮的方法来代替自动加载新内容的方式。

关于分页这个主题,如果你还想深入了解,你可以访问ux.stackexchange.com网站。那里有一些极好的问题与答案。

总之,你应该努力不扯上分页这玩意儿,因为你应该让用户在几个条目中就能找到他们需要的东西。这是高于一切的!因此,我怀疑Google在他们的核心搜索结果页面里对这个技术没有很用心。如果他们不能在第一页里列出极好的搜索结果,那么他们采用何种分页方法其实无关紧要,因为他们要不了多久就会被淘汰乃至破产。请把这牢记在心:你要为用户呈献一个相关条目的列表,并且要有一个明智的排序方法;为此你应该殚精竭虑。只有在这之后,你才应该去考虑你的分页方案。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics