我正在寻找一个答案,这个问题也让我将分享我在那里与它在一起。
我想要垂直显示大量内容并让用户滚动浏览它。我可以将它全部加载到DOM中并正常滚动,但是最初的创建阶段非常慢,而且滚动也会非常慢。另外,当我流入更多数据时,我会动态地添加它。
所以我希望能够动态地填充和更新带有内容的非滚动区域。我想让它看起来好像用户正在滚动浏览该内容并拥有一个模型(其中包含大量数据),该模型将保留在DOM之外直到它被看到。
我想我会用一个队列概念来管理可见的DOM元素。我将存储queueHeadIndex和queueTailIndex来记住DOM中显示的DOM外部元素。当用户向下滚动时,我会弄清楚队列头部是否脱离屏幕,以及是否更新queueHeadIndex并删除它的DOM元素。其次,我会确定是否需要更新queueTailIndex并将新元素添加到DOM。对于当前DOM中的元素,我需要将它们移动(不确定它们是否需要动画或尚未)。
更新: 我发现这里面似乎有一些承诺http://jsfiddle.net/GdsEa/
我现在的想法是,有两个部分的问题。
首先,我想我想禁用滚动并进行某种虚拟滚动。我刚刚开始为此寻找http://www.everyday3d.com/blog/index.php/2014/08/18/smooth-scrolling-with-virtualscroll/。这将捕获所有事件并使我能够以编程方式调整当前可见的内容等,但浏览器实际上不会滚动任何内容。这似乎提供了鼠标滚轮驱动的滚动。
其次,我想我需要显示一个滚动条。我看了一下http://codepen.io/chriscoyier/pen/gzBsA,我正在寻找更多东西看起来更本土。我只是希望它可以直观地显示滚动的位置,并允许用户通过拖动滚动条来调整滚动位置。
#1被坚持我将代码粘贴所以这里是从codepen链接一些代码上面
var elem = document.getElementById('scroll-area'),
track = elem.children[1],
thumb = track.children[0],
height = parseInt(elem.offsetHeight, 10),
cntHeight = parseInt(elem.children[0].offsetHeight, 10),
trcHeight = parseInt(track.offsetHeight, 10),
distance = cntHeight - height,
mean = 50, // For multiplier (go faster or slower)
current = 0;
elem.children[0].style.top = current + "px";
thumb.style.height = Math.round(trcHeight * height/cntHeight) + 'px';
var doScroll = function (e) {
// cross-browser wheel delta
e = window.event || e;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
// (1 = scroll-up, -1 = scroll-down)
if ((delta == -1 && current * mean >= -distance) || (delta == 1 && current * mean < 0)) {
current = current + delta;
}
// Move element up or down by updating the `top` value
elem.children[0].style.top = (current * mean) + 'px';
thumb.style.top = 0 - Math.round(trcHeight * (current * mean)/cntHeight) + 'px';
e.preventDefault();
};
if (elem.addEventListener) {
elem.addEventListener("mousewheel", doScroll, false);
elem.addEventListener("DOMMouseScroll", doScroll, false);
} else {
elem.attachEvent("onmousewheel", doScroll);
}
我想我要一个类,监听或者通过虚拟滚动方式或用户界面,并滚动事件然后更新ui卷轴和我正在管理的内容的用户界面。
无论如何,我会更新这个,如果我发现更有用的东西。
我可能会错过它,但我没有在那里看到具体的问题。 – Daedalus 2012-07-30 21:31:08
我希望可用于创建假滚动条的选项,或对我正在使用的术语进行更正。 – 0xdabbad00 2012-07-30 21:32:03
你问如何延迟加载exe? – nycynik 2012-07-30 21:32:14