如何利用Observer实现图片的懒加载,并且实现列表的虚拟滚动
时间: 2024-03-08 17:46:17 浏览: 51
简单的图片懒加载实现
可以使用Intersection Observer API来实现图片的懒加载和列表的虚拟滚动。具体步骤如下:
1. 对于图片懒加载,可以利用Intersection Observer API监听图片是否进入可视区域,如果进入则加载图片,否则不加载。代码示例:
```javascript
const io = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const lazyImage = entry.target;
lazyImage.src = lazyImage.dataset.src;
io.unobserve(lazyImage);
}
});
});
const lazyImages = document.querySelectorAll('.lazy');
lazyImages.forEach(lazyImage => {
io.observe(lazyImage);
});
```
2. 对于列表的虚拟滚动,可以利用Intersection Observer API监听列表项是否进入可视区域,如果进入则渲染列表项,否则不渲染。代码示例:
```javascript
const io = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const listItem = entry.target;
renderListItem(listItem);
io.unobserve(listItem);
}
});
});
const listItems = document.querySelectorAll('.list-item');
listItems.forEach(listItem => {
io.observe(listItem);
});
```
需要注意的是,虚拟滚动需要在列表项数量很大时才能体现出效果,因为只有当列表项数量很大时,才能发挥出减少渲染次数的作用。
阅读全文