tiny-virtual-list

A JS library for virtual list
Usage
Install
npm i tiny-virtual-list
HTML
<div class="scroller">
<ul class="container">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
JavaScript
import Virtual from 'tiny-virtual-list';
const container = document.getElementById('container');
const scroller = document.getElementById('scroller');
new Virtual(container, {
count: 100,
scroller: scroller,
onUpdate: ({ start, end, total, front, behind }) => {
container.innerHTML = '';
for(let i = start; i <= end; i++) {
const item = document.createElement('li');
item.innerHTML = `${i}`;
container.append(item);
}
container.style.padding = `${front}px 0px ${behind}px`;
}
})
Options
new Virtual(element, {
size: 0,
count: 0,
buffer: 1,
scroller: HTMLElement | window | document,
direction: 'vertical',
debounceTime: 0,
throttleTime: 0,
onUpdate: (range) => {
},
onScroll: ({ offset, top, bottom, direction }) => {
if (top === true) {
}
if (bottom === true) {
}
},
})
Methods
let virtual = new Virtual();
virtual.destroy();
virtual.option(key, value?);
virtual.refresh();
virtual.updateRange(start?);
virtual.addScrollEventListener();
virtual.removeScrollEventListener();
virtual.getSize(index: Number);
virtual.getOffset();
virtual.getClientSize();
virtual.getScrollSize();
virtual.scrollToBottom();
virtual.scrollToIndex(index: Number);
virtual.scrollToOffset(offset: Number);
Utils
Virtual.utils.debounce(fn: Function, wait: Number);
Virtual.utils.throttle(fn: Function, wait: Number);