自定义无限滚动,当滚动出视图时移除项目

7

问题

现代网站通常使用无限滚动技术来替换分页列表,为用户提供更无缝的体验。

这看起来很好,只要用户不滚动太远,这意味着您的文档将变得非常复杂,有大量DOM节点。当然,有方法可以缓解这个问题(例如使用单个适当高度的DIV替换溢出滚动元素上面的内容),但它们要么难以实现,要么仍然存在缺陷。

思路

我在想是否有人已经看到过一种实现方式,其中滚动出屏幕(顶部或底部)的项目会变得越来越小和淡,直到消失并被相邻项替换。

我考虑结合以下体验:

  • 滚动
  • 淡出
  • 缩放
当你在Medium.com阅读文章并且点击下方推荐的文章标题时(点击标题),你会看到淡入淡出和缩放效果。如果你留意,你可以看到原始文章消失,同时被一个新文章取代。
内容滚动可以采用这种方式,无限滚动将更加流畅,资源消耗更少,因为元素将会即时替换并处于原位。同时,同时显示的项目数量取决于项目大小。对于Medium-line文章,可能只会有一篇文章,并且会随着你向下(或向上)滚动而滚动。对于像Facebook这样的帖子,同时显示的项目将会更多,因为它们不需要太多的垂直空间。
Coverflow的工作方式与此类似,因为它完全显示中间内容,其余部分要么被隐藏,要么被缩放/转换。
问题是:有人在网站上见过这样的实现吗?如果做得好,它实际上会让我们获得更好的无限滚动体验,而不会占用我们的浏览器资源。
但要使我的问题更清晰、不容置疑,请提供一个可行的(尽管简化的)示例来展现这种体验。
要求:
  • 当一个项目被滚动出去时,它会消失(使用淡入淡出/缩放/两者皆可)
  • 当项目出现在底部(或向上滚动时的顶部),它们应该以与滚动出的项目相反的方式显示
  • 按下常规滚动按钮 Home, End, Page Up, Page DownSpace 应该可以工作。
  • 不可见的项目应该从DOM中删除
  • 滚动还应该通过某种类型的滚动条可用

我不确定这是否正是您要寻找的,但Reddit有一个插件可以实现无限滚动体验,称为“永无止境的Reddit”。您可以在http://redditenhancementsuite.com/找到它。 - Justin Loveless
@JustinLoveless:我在Reddit上或者作为演示在哪里可以看到这个? - Robert Koritnik
1
@JustinLoveless:不是的,这个Reddit扩展程序只是一个普通的无限滚动,它只是将元素附加到文档中。这是我们可以在任何地方看到的常规方式(Google+、Facebook等)。这并不会在我们向下滚动时从顶部删除项目,以保持DOM轻量和小巧。 - Robert Koritnik
1个回答

0

并不完全是这样。本文中使用的技术是我想要在任何设备上保持迅捷的技术。但是,这个列表的显示方式相对独特,因为我已经想象过它。滚动到medium.com,点击第一篇文章,滚动到页面底部,点击下一篇文章的标题并观察视觉效果,当原始文章消失并被新文章替换时。这就是我想要的效果,但是页面上充满了低于整页的项目,因此会同时显示几个项目。 - Robert Koritnik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接