无限下拉滚动条设置,滚动监听上拉滚动条设置置底

当我们使用滚动监听,并由无限滚动上下滑动,同时兼顾发送请求

那么这是就会出现一个问题
如何在请求到数据,并渲染完dom操作,将滚动条设置到我们想要的地方

核心技术:watch 监听 + $nextTick()
下面上代码

监听

 mounted() {
        this.box = this.$refs.container
        // 监听这个dom的scroll事件
        this.box.onscroll = cardList => {
            this.handleScroll(cardList)
        }
    },

监听函数

handleScroll: throttle(100, function (cardList) {
            this.$nextTick(() => {
                const scrollData = this.$refs.container
                const viewH = scrollData.clientHeight // 可见高度
                const contentH = scrollData.scrollHeight // 总高度
                const scrollTop = scrollData.scrollTop // 滚动高度
                // 下滑到底部时 Math.ceil为了兼容浏览器差别
                if (viewH + Math.ceil(scrollTop) > contentH ) {
                    // console.log(scrollTop, contentH, viewH)
                   你想做的事
                } else if (Math.ceil(scrollTop) == 0) {
                    // 上滑到顶部时
                    你想做的事
                } else {
                    const cardList = [...document.querySelectorAll('.Bracket .item')] ?? []
                    for (let index = cardList.length - 1; index >= 0; index--) {
                        const card = cardList[index]
                        // if (card.id.split('-')[1] < this.currentMainTermIndex) break
                        if (scrollTop - card.offsetTop >= 0) {
                            滑动到你的class div 做的事
                            break
                        }
                    }
                }
            })
        }),

滚动条设置

 watch: {
       
        // 滚动条设置
        监听数据(或请求回来的数据): {
            handler() {
                    this.$nextTick(() => {
                        const scrollData = this.$refs.container
                        scrollData.scrollTop = 10
                        // 滚动条设置
                    })
                }
            deep: true,
        },
    },

最后别忘了组件销毁清除监听器

 destroyed() {
        document.removeEventListener('scroll', this.handleScroll)
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值