• better-scroll


    <template>
        <div class="wrapper" ref="wrapper">
            <div class="content">
                <slot></slot>
                <!--上拉加载-->
                <div v-if="BtomPullUpLoad" class="pullup-tips">
                    <div v-if="!isPullUpLoad" class="before-trigger">
                        <span class="pullup-txt">Pull up and load more</span>
                    </div>
                    <div v-else class="after-trigger">
                        <span class="pullup-txt">Loading...</span>
                    </div>
                </div>
    <!--上拉加载结束-->
            </div>
        </div>
    </template>
    <script>
    import BScroll from 'better-scroll'
    export default {
        name: 'betterScroll',
        props: {
            BtomPullUpLoad: { // 底部消息提示
                type: Boolean,
                default: false
            },
            probeType: { // 1 滚动的时候会派发scroll事件,会截流。2滚动的时候实时派发scroll事件,不会截流。 3除了实时派发scroll事件,在swipe的情况下仍然能实时派发scroll事件
                type: Number,
                default: 3
            },
            click: { //  点击列表是否派发click事件
                type: Boolean,
                default: true
            },
            scrollX: { //  是否开启横向滚动
                type: Boolean,
                default: false
            },
            scrollY: { //  是否开启横向滚动
                type: Boolean,
                default: false
            },
            pullDownRefresh: { // 配置顶部下拉的距离 回弹停留的距离
                type: Object,
                default: () => {
                    return {
                        threshold: 90,
                        stop: 40
                    }
                }
            },
            pullUpLoad: { // 配置上拉距离
                type: Object,
                default: () => {
                    return {
                        threshold: -100
                    }
                }
            },
            bounce: {
                type: Object,
                default: () => {
                    return {
                        top: true,
                        bottom: true,
                        left: true,
                        right: true
                    }
                }
            }
        },
        data () {
            return {
                isPullUpLoad: false // 底部加载提示信息
            }
        },
        mounted () {
            this.$nextTick(() => {
                this.initScroll()
            })
        },
        methods: {
            initScroll () {
                this.scroll = new BScroll(this.$refs.wrapper, {
                    stopPropagation: true, // 组织冒泡
                    probeType: this.probeType,
                    click: this.click,
                    scrollX: this.scrollX,
                    scrollY: this.scrollY,
                    pullDownRefresh: this.pullDownRefresh,
                    pullUpLoad: this.pullUpLoad,
                    bounce: this.bounce
                })
                this.scroll.on('pullingDown', () => {
                    console.log('下拉刷新')
                    this.scroll.finishPullDown() // 结束下拉刷新行为。
                })
                this.scroll.on('pullingUp', () => {
                    console.log('上拉加载')
                    this.isPullUpLoad = true
                    this.axiousM() // 请求数据
                })
            },
            refreshM () {
                this.scroll.refresh()
            },
            finishPullUpM () {
                this.scroll.finishPullUp() // 结束上拉加载行为。
            },
            axiousM () {
                setTimeout(() => {
                    this.isPullUpLoad = false
                    this.finishPullUpM()// 结束上拉加载行为。
                    setTimeout(() => {
                        this.refreshM()
                    }, 20)
                }, 1500)
            }
        }
    }
    </script>
    <style lang="less" scoped>
    .wrapper{
        position: absolute;
        top: 0;
        bottom: 0;
        right: 0;
        left: 0;
        overflow: hidden;
    }
    .content{
    }
    .pullup-tips{
        padding: 20px;
        text-align: center;
        color: #999
    }
    </style>

    better-scroll 设置滚动条位置

       el : 代表元素,  better-scroll会滚动的 el元素的位置

    this.scroll.scrollToElement(el, 0, 0)
  • 相关阅读:
    数据仓库-(3)企业级数仓实战分享课程-1.课程简介/2.数仓简介/3.基础概念/4.大数据技术栈与组件
    数据仓库-(2)企业级数仓介绍
    数据仓库-(1)数仓主题分享记录
    Spark学习小记-(1)DataFrame的schema
    Hive学习小记-(11)left semi join
    Hive学习小记-(10)hive增量下发的变化流水表如何做update操作
    Hive学习小记-(9)hive分区表加字段**
    Hive学习小记-(8)hive查询除某列外所有数据(正则表达式查询)
    Hive学习小记-(7)group by原理&tips
    我曾七次鄙视自己的灵魂
  • 原文地址:https://www.cnblogs.com/javascript9527/p/15428637.html
Copyright © 2020-2023  润新知