keyword: intersectionObserver scroll-list Scroll animation,quick scroll resolved
yarn add vue-virtual-list-observer
-
Only 3 required props, simple and very easy to use.
-
intersectionObserver efficient and resolve Fast scrolling in a white screen.
-
Highly customizable and has a live demo to get started quickly
-
Callback function, which allows the dynamic addition of list items according to the scrolling situation
newest demo checked by git clone and yarn && yarn dev
npm install vue-virtual-list-observer
or
yarn add vue-virtual-list-observer
Prop | Type | Description |
---|---|---|
visualDomCount | Number | Number of elements visible in the list.It is worth noting that the number of render Doms is usually greater than the number of visualDoms |
resArr | Array[] | The source array built for list, The effect and logic are the same as the real list |
scrollInstance | function(){return HTMLDivElement } | Need to transfer the nearest scrollable ancestor of the ListDOM component (for custom scroll bar and else) |
Prop | Type | Description |
---|---|---|
domHeight | Number | Approximate height of list item, usually used to handle edge cases |
scrollAnima | Boolean | scrollToTop has a scrolling effect,not directly |
Method | Description |
---|---|
request | Event triggered when the scroll bar scrolls to the bottom and the number of elements in resArr is not enough for the next loading, this event will be triggered. (Typically, that function need you to request api and pushes new data into resarr) |
Method | Description |
---|---|
getScroll | Get the scrollTop distance of the list |
scrollToTop | set scroll position to ListTop. |
scrollToIndex | set scroll position to resArr[index] |
Method | Description |
---|---|
list | Set the style of the list item element |
footer | Set the style of loading to request |
for the public method(provide,emit) request
if you want to do some async things, in the provide function you need return promise instance,because of async func is uncontrollable for the ListDOM Childcomponent. And you need to use provide api to provide request function to ListDOM component
$emit() just triggers the event, after the event is triggered, the logic task of the (child) component ends
So async need to use provide && return promise instance
In the request function you usually request the backend's interface and display it on the screen
If not as mentioned above, no limit