JS实现滚动条触底加载更多

JavaScript035

JS实现滚动条触底加载更多,第1张

原理

1.通过监听滚动区域DOM的scroll事件, 计算出触底

// 滚动可视区域高度 + 当前滚动位置 === 整个滚动高度

scrollDom.clientHeight + scrollDom.scrollTop === scrollDom.scrollHeight

2.触底后触发列表添加, 列表添加使用createDocumentFragment, 将多次插入的DOM先存入内存, 最后一次填充进去, 提高性能, 也方便后面的MutationObserver监听

3.使用MutationObserver监听列表的DOM添加, 添加完毕后, 隐藏加载中提示

示例

https://codepen.io/klren0312/full/dybgayL

参考资料

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/clientHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTop

https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalEventHandlers/onscroll

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createDocumentFragment

https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

通过div的scrollTop变动控制垂直滚动条位置。

通过div的scrollLeft变动控制水平滚动条位置。

示例

<body>

//d1是外层div,带滚动条

<div id='d1' style='height:200pxwidth:100pxoverflow:autobackground:blue'>

<div style='height:500pxwidth:500pxbackground:yellow'>2222</div>

</div>

</body>

<script>

document.getElementById('d1').scrollTop=100//通过scrollTop设置滚动到100位置

document.getElementById('d1').scrollLeft=200//通过scrollTop设置滚动到200位置

</script>

1、首先需要新建一个HTML文档,这里设立一下基本的架构。

2、再新建一个CSS文件,用link关联一下HTML文档。

3、创建DIV标签,并且往里面填充内容。

4、先设定一下滚动条内框的大小。

5、用border先来查看是否有超出,这里可以看出超出了很多内容。

6、overflow-y: scrolloverflow-x: scroll加上这个样式滚动条就会出现了。

7、现在就能对轨道和滚动条进行样式的设置了。