vue实现局部滚动加载 加自定义滚动加载的指令
vue实现局部滚动加载 加自定义滚动加载的指令 1. 先来实现局部的滚动加载
-
{{item}}
- ~没有更多了~
.cart{
padding-top: 50px;
font-size: 12px;
.cart-musics{
margin-top: 30px;
// overflow: hidden;
height: 500px;
border-bottom: 1px dashed #999999;
border-bottom-width: 2px;
.cart-musics-ul{
overflow-x: scroll;
height: 500px;
li{
padding: 0 10px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
height: 80px;
}
}
}
}
我这的样式外层div的高度设置的500 可以自行设置高度
下面把滚动加载的方法封装成v-loadmore 自定义指令
【vue实现局部滚动加载 加自定义滚动加载的指令】新建loadMore.js
import Vue from 'vue'Vue.directive('loadmore', {
//
inserted: (el, bind, vnode) => {
// 这里参考管方https://cn.vuejs.org/v2/guide/custom-directive.html#%E5%8A%A8%E6%80%81%E6%8C%87%E4%BB%A4%E5%8F%82%E6%95%B0
// el当前绑定的元素
// console.log(el, bind, vnode)
// 给元素添加滚动事件监听
el.addEventListener('scroll', function () {
console.log('绑定元素的高度:', el.clientHeight)
console.log('绑定元素的滚动条的高度', el.scrollHeight)
console.log('滚动条距离顶部的距离', el.scrollTop)
console.log('滚动条的高度 - 元素的高度 - 滚动条距离顶部的距离 = 0', (el.scrollHeight - el.clientHeight) - el.scrollTop)
// 这里的判断和上面watch监听是一样的
if ((el.scrollHeight - el.clientHeight) - el.scrollTop === 0) {
// binding.value来调用指令上的方法获取数据
binding.value()
}
})
}
})
页面中使用就简单很多了 可以直接使用指令绑定一个方法来调用获取数据的方法
-
{{item}}
- ~没有更多了~
.cart{
padding-top: 50px;
font-size: 12px;
.cart-musics{
margin-top: 30px;
// overflow: hidden;
height: 500px;
border-bottom: 1px dashed #999999;
border-bottom-width: 2px;
.cart-musics-ul{
overflow-x: scroll;
height: 500px;
li{
padding: 0 10px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
height: 80px;
}
}
}
}
自己实现滚动加载就是这样的
知识积累,有不足的地方希望各位评论中指出来改进
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- 2020-04-07vue中Axios的封装和API接口的管理
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆