我有很多内容要在网站上显示,这样我就需要使用“无限”滚动解决方案,当用户滚动到当前加载内容的末尾时加载内容。但是,我确切知道有多少数据,我希望用户对此有所了解。我不喜欢滚动条如何使它看起来几乎到了内容的末尾,然后突然加载了更多的内容,拇指/滑块位于滚动轨道的中间并且更窄。
我计划的解决方案是在当前内容很大但是为空的情况下创建一个div,然后在加载更多内容时缩小它。有更好的想法吗?
答案 0 :(得分:2)
当你设计一个UI元素时,首先要问的是你希望最终用户真正体验到什么。你的解决方案会使它看起来像还有大量的数据(如果它是旧的/存档的东西,它可能与用户无关)。这可能会让用户完全没有阅读内容,因为它看起来太长了。
问题是滚动条未设计以支持展开内容。正如你所指出的那样,这些内容具有欺骗性。您可以设计一个全新的滚动功能,提供完整的信息
带有绿色背景的彩色滚动条,指示加载的内容和当前状态,黄色部分指示加载的内容但旧数据,以及红色部分,指示用户滚动时可以下载的内容,这样做非常好。
答案 1 :(得分:2)
我的最终解决方案是在div中创建一个包含滚动条的表。我将表格的高度设置为内容总量的高度,将第一行设置为未被查看的内容部分的高度,下一行是当前正在查看的内容。
然后,我使用的过程非常类似于横向滚动视频游戏中使用的过程,您只能在屏幕上绘制可见的内容,或仅绘制可见区域附近的内容。我利用航点来跟踪用户滚动到的位置,然后刷新可见内容并使用jquery scrollto功能将用户保持在他们正在查看的相同位置。因此,在任何一点上,只有一页内容被显示"显示"在当前观看区域之上或之下。
我应该注意所有的内容"实际上已经在客户端的系统上了,所以下载不是问题。我的问题是"内容"是一个庞大的DOM结构,如果我试图立即处理它,最终会使客户端的系统变得非常糟糕。所以我一次只创建和显示它的一部分。
如果你决定抓住滚动条并将其拖动到内容的底部,这会导致屏幕刷新和不良,从而导致一些不稳定。如果我找到更好的东西,我会更新它。
<强>更新强> 我在我的网站上记录了如何执行此操作:http://0xdabbad00.com/2012/11/25/icebuddha-scrolling-javascript-infinite-scrolling-in-a-finite-area/
答案 2 :(得分:-2)
您可以在最大文档的最末端插入一个不显眼的字符(比如15k像素),这样滚动条就能准确反映页面的深度,如果这就是您的意思。像这样......
document.write('<div style="Position:Absolute; Left:0px; Top:15000px;";>.</div>');