【发布时间】:2014-02-13 07:22:40
【问题描述】:
问题
当今的现代网站可能会使用无限滚动技术来替换分页列表,从而为用户提供更加无缝的体验。
只要用户不向下滚动太远,这一切都很好,这意味着您的文档会因大量 DOM 节点而变得非常复杂。当然有一些方法可以缓解这个问题(例如,用适当高度的单个 DIV 替换顶部溢出的滚动元素),但它们要么实现起来很复杂,而且仍然存在缺陷。
想法
我在想是否有人已经看到了这样一种实现,其中滚动出去(顶部或底部)的项目以某种方式变得更小和更暗,直到它们消失并被相邻的项目取代。
我正在考虑以下经验的混合:
- 滚动
- 褪色
- 缩放
当您到达任何文章的底部并单击下面显示的下一个推荐的文章(单击标题)时,可以在Medium.com 上看到淡化和缩放。当您单击时,如果您注意,您可以看到原始文章消失而被向上滑动的新文章替换的效果。 可以通过这种方式进行内容滚动,并且无限滚动会更加流畅且资源消耗更少,因为元素会被即时替换并就地替换。
同时显示的项目数当然取决于项目的大小。在中行文章的情况下,它可能是一篇也会滚动的文章,直到您将其滚动到最底部(或顶部)。对于像 Facebook 这样的帖子,会同时包含更多项目,因为它们不会占用太多的垂直空间。
Coverflow 的工作方式有点类似,因为它完全显示中间内容,其余部分要么隐藏,要么缩放/转换。
问题
有人在网上看到过这样的实现吗?如果处理得当,它实际上会在不占用浏览器的情况下提供更好的无限滚动体验。
但是为了让我的问题更加清晰和无可争议。 您能否提供此类经验的工作(尽管是简化的)示例?
要求:
- 当一个项目被滚动出去时它会消失(使用淡入淡出/缩放/两者)
- 当项目显示在底部(或向上滚动时显示在顶部)时,它们应显示在与滚动出的项目相反的位置
- 按常规滚动按钮 Home、End、Page Up、Page Down 和 Space 应该可以工作。
- 应从 DOM 中删除不可见的项目
- 应该也可以使用某种滚动条进行滚动
【问题讨论】:
-
我不知道这是否正是您正在寻找的,但是 Reddit 有一个插件可以提供无限滚动体验,他们称之为“永无止境的 reddit”。您可以在redditenhancementsuite.com 找到它
-
@JustinLoveless:我在哪里可以在 reddit 或演示中看到这个?
-
如果您将插件安装到浏览器中(我使用的是 chrome),那么只需访问 www.reddit.com。当您向下滚动页面时,它会不断加载下一页。有时加载时会有轻微的停顿,但它看起来很轻,而且我的浏览器似乎并没有占用太多资源,即使导航到很远的地方。
-
@JustinLoveless:不不。这个 Reddit 扩展只不过是一个通常的无限滚动,它只是将元素附加到文档中。这是我们随处可见的常用方式(Google+、Facebook 等)。当我们向下滚动以保持 DOM 轻巧小巧时,这不会删除顶部的项目。