美文网首页
better-scroll滑动插件使用,上拉加载

better-scroll滑动插件使用,上拉加载

作者: plum_meizi | 来源:发表于2021-11-18 12:51 被阅读0次

1.安装
npm install better-scroll@next -S

2.使用

import BScroll from '@better-scroll/core';
import ScrollBar from '@better-scroll/scroll-bar';

private bscroll: BScroll | null;

// 使用滚动条 并且修改滚动条样式
ScrollBar.prototype['_createIndicatorElement'] = direction => {
    const scrollbarEl = document.createElement('div');
    const indicatorEl = document.createElement('div');
    scrollbarEl.style.cssText = 'position:absolute;z-index:9999;pointerEvents:none';
    indicatorEl.style.cssText = 'box-sizing:border-box;position:absolute;background:#ffecba;border:0;border-radius:0.08rem;';
    indicatorEl.className = 'bscroll-indicator';
    if (direction === 'horizontal') {
        scrollbarEl.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';
        indicatorEl.style.height = '100%';
        scrollbarEl.className = 'bscroll-horizontal-scrollbar';
    } else {
        scrollbarEl.style.cssText += ';width:0.04rem;bottom:0px;top:0px;right:0px';
        indicatorEl.style.width = '100%';
        scrollbarEl.className = 'bscroll-vertical-scrollbar';
    }
    scrollbarEl.style.cssText += ';overflow:hidden';
    scrollbarEl.appendChild(indicatorEl);
    return scrollbarEl;
};
BScroll.use(ScrollBar);

// 初始化BScroll,并监听scrollEnd事件
const ele = document.getElementById(this.id) as HTMLElement;
this.$nextTick(() => {
    this.bscroll = new BScroll(ele, {
        scrollY: true,
        scrollbar: { fade: false },//滚动条是否一直显示
        click: true,
        useTransition: false,
    });
    this.bscroll.on('scrollEnd', pos => {
        // 滚动到底部事件,用于上拉加载
                // 设置距离50 使加载更快更灵敏
        if (this.bscroll && pos.y <= this.bscroll.maxScrollY + 50) {
            this.pullUpEvent();
        }
    });
});

private async pullUpEvent() {
    if (this.ismore) {
        return;
    }
    const res = await msg.get({ offsetTime: this.offsetTime });
    this.list = this.list.concat(res.data.prays);
    if (res.data.prays.length) {
        this.offsetTime = res.data.prays[res.data.prays.length - 1].receiveTime;
    } else {
                // 没有更多了
        this.ismore = true;
    }
    this.$nextTick(() => {
                //刷新滑动
        this.bscroll?.refresh();
    });
}
踩坑:安卓手机,在数据较多情况下,滑动渲染慢

解决办法:useTransition此参数设置为false,不要用此动画属性

3.样式修改

/deep/.bscroll-indicator {
    background: #ffecba !important;
    border: none !important;
}
/deep/.bscroll-vertical-scrollbar {
    width: 6px !important;
}

相关文章

  • betterScroll 上拉多次刷新的问题

    最近项目使用了better-scroll这个插件,主要用到上拉加载数据。 主要监听pullingUp 事件来完成上...

  • better-scroll在vue的使用

    某一个页面的列表使用better-scroll的上拉加载和下拉刷新功能,better-scroll被封装成vue的...

  • better-scroll首次加载无法滑动的问题

    使用better-scroll在Chrome手机模式下调试时,第一次加载页面无法滑动,刷新后就可以正常使用。阅读文...

  • TableView加载更多设置

    在需要上拉加载更多的tableview上设置footerview提示上拉加载更多,在tableview滑动停止时回...

  • 好用的插件

    插件 图片懒加载模板插件art-template H5滑动插件iscroll-5/H5滑动插件better-scr...

  • WEEX开发总结

    1:上拉加载更多使用的函数; 在最开始使用的是loading这个组件;在短链接的情况下就会出现;滑动就加载;无论是...

  • 实现RecyclerView预加载及点击item按钮删除功能(局

    一、RecyclerView上拉实现预加载 在RecyclerView的滑动监听中,上拉时,通过判断视图最后可见位...

  • better-scroll踩坑合集

    better-scrollgithub 最近项目使用了better-scroll这个插件,这个插件用起来还是有不少...

  • vue关于下拉刷新,上拉加载

    下拉刷新,上拉加载在项目中是很常见的需求 之前一直在用better-scroll,总会出现多次加载的问题,一直没办...

  • 2018-11-15

    下雨了,今天的问题主要集中在,上拉加载插件的使用,上来加载的this的指向,排序的接口有问题;大部分错误集中在发送...

网友评论

      本文标题:better-scroll滑动插件使用,上拉加载

      本文链接:https://www.haomeiwen.com/subject/hhihtrtx.html