我正在尋找一個答案,這個問題也讓我將分享我在那裏與它在一起。
我想要垂直顯示大量內容並讓用戶滾動瀏覽它。我可以將它全部加載到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