vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020-06-20 11:48
197 查看
1、是否滚动到底部
isScrollBottom() { // 是否滚动到了底部 this.box = this.$refs.chatListWrapper var clientHeight = this.box.clientHeight var scrollTop = this.box.scrollTop var scrollHeight = this.box.scrollHeight if (scrollTop + clientHeight == scrollHeight) { this.$store.dispatch('setBottomBtn', false, { root: true }) // 隐藏直达最新消息按钮 this.isBottom = true this.isTop = false } else { this.$store.dispatch('setBottomBtn', true, { root: true }) // 显示直达最新消息按钮 this.isTop = false this.isBottom = false if (scrollTop == 0) { this.isTop = true } } },
2、scroll滚动方向判断
getDirection() { // scroll滚动方向~~~~ this.box = this.$refs.chatListWrapper var scrollTop = this.box.scrollTop var scroll = scrollTop - this.initTop this.initTop = scrollTop let dir = 'down' if (scroll < 0) { dir = 'up' } else { dir = 'down' } return dir },
3、滚动节流
1)、在滚动的dom上绑定scroll事件,监听滚动
2)、data中定义:fnScroll: () => {},
初始值
3)、mounted中给fnScroll函数赋值,_.throttle实现滚动节流
this.fnScroll = _.throttle(() => { }, 500)
4、获取滚动可视区域内dom:
实现注意:判断当前元素是否在可视区域内,若在则存到isSeeDomArr中,然后循环isSeeDomArr数组,拿到当前可视区域内的最后一个dom,再去判断是否更新对应的咨询轨迹。
不要滚动时就去更新,这样会造成不停请求更新,最后一次请求可能无效,造成数据的错乱
sendRead() { const chatLi = document .getElementById('chat_list_wrapper') .getElementsByTagName('li') var container = this.$refs.chatListWrapper var swHeight = container.clientHeight const scrollTop = container.scrollTop const aa = swHeight + scrollTop let isSeeDomArr = [] for (let j = 0; j < chatLi.length; j++) { if (scrollTop < chatLi[j].offsetTop && chatLi[j].offsetTop < aa) { isSeeDomArr.push(chatLi[j]) //将可视区域内所有dom存储到isSeeDomArr } } if (isSeeDomArr.length) { // 非 ceo接诊台更新消息的已读状态 if (this.$route.path.indexOf('diagnose/ceo') === -1) { for (let m = 0; m < isSeeDomArr.length; m++) { const isSelfSend = isSeeDomArr[m].getAttribute('isSelfSend') const msgStatus = isSeeDomArr[m].getAttribute('msgStatus') const msgType = isSeeDomArr[m].getAttribute('msgType') if (!isSelfSend && !msgStatus && msgType !== 'notice') { const _id = isSeeDomArr[m].getAttribute('id') this.sendReadApi(_id) } } } // 更新聊天对应的咨询轨迹 this.setCurrentFdAsk( isSeeDomArr[isSeeDomArr.length - 1].getAttribute('fdAsk') ) } },
the end:滚动加载这些判断前前后后改了好多次,这次终于感觉逻辑比较清晰了,也算对自己有个交代。。。
到此这篇关于vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)的文章就介绍到这了,更多相关vue scroll滚动判断内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- vue中利用iscroll.js解决pc端滚动问题
- vue和iview实现Scroll 数据无限滚动功能
- vue滚动插件better-scroll使用详解
- vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
- vue 框架下自定义滚动条(easyscroll)实现方法
- 使用vue-infinite-scroll实现无限滚动效果
- vue better scroll 无法滚动的解决方法
- Vue的el-scrollbar实现自定义滚动
- vue中实现移动端的scroll滚动方法
- 详解 vue better-scroll滚动插件排坑
- vue scroller返回页面记住滚动位置的实例代码
- vue-scroller记录滚动位置的示例代码
相关文章推荐
- js 原生判断内容区域是否滚动到底部的实例代码
- 判断scroll是否滚动到底部以及实现回到顶部
- JS实现利用闭包判断Dom元素和滚动条的方向示例
- 实现winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部
- jQuery判断网页是否已经滚动到浏览器底部的实现方法
- js 原生判断内容区域是否滚动到底部
- 【Android】ListView监听上下滑动(设置滚动监听判断ListView的滚动方向同时获取屏幕高度、ListView实际高度,判断是否需要展示返回顶部按钮(具体逻辑请看代码--附有详细注释)。
- jQuery实现判断滚动条滚动到document底部的方法分析
- iOS 判断UITableView是否滚动在最底部
- 判断数组是否包含某个元素的js函数实现方法
- 原生 JS 判断页面是否滚动到底部
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- 判断页面是否滚动到底部
- 判断用户是否在看当前网页以及判断某个元素是否在网页可视区域
- jquery判断页面滚动条(scroll)是上滚还是下滚,且是否滚动到头部或者底部
- jquery判断页面滚动条(scroll)是上滚还是下滚,且是否滚动到头部或者底部
- Vue-懒加载(判断元素是否在可视区域内)
- js判断滚动条是否已到页面最底部或顶部实例-拓展(逐渐-自动下滑滚动)
- jquery判断页面滚动条(scroll)是上滚还是下滚,且是否滚动到头部或者底部
- C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)