如何使用better-scroll以及遇到滑动失效等问题(vue)

当我们在移动端上进行触控滑动的时候,明明代码写的没有什么问题,但就是滑动十分的不流畅,用了很多css样式和数据优化都改变不大,于是在尝试用better scroll了之后,解决了这个问题。

但在第一次尝试使用的时候,遇到了引入了better scroll,但就是页面组件里不滑动。(我使用的是在页面中单个组件滑动)
总结了一下,有一下几点在使用的时候需要注意的地方:

1:首先就是在需要滑动的组件中引入(先npm下好组件)

import BScroll from "better-scroll";

2:一定要在外层(包裹v-for的div)再嵌套一层,且高度要小于里面那层的div

 <div class="wrapper" ref="wrapper" > //外层再嵌套的一层
			<div class="card-list" v-show="showCourse" ref="cardlist"> //外层(包裹v-for的)
				<div class="card" v-for="(item, index) in list" @touchstart="checkCard(index, item.id)">
				单个小内容
				</div>
			</div>
 </div>
//用的是平板的屏幕数据,大家按自己的来就好(  overflow: hidden 一定要有)
 .wrapper{
                height: calc(100vh - 455px);
                overflow: hidden;
                width: 100%;
            }
//外层div没什么特殊的css,按照自己来的就好,最好是加上min-height,保证最初渲染的时候比外面嵌套的div大
.card-list {
                min-height: 1400px;
                display: flex;
                flex-wrap: wrap;
			}

3:如何使用better scroll,我在网上看到监听各种写在created、mounted、update里的,我各种尝试后,最终写在mounted和watch里的。
如果是电脑上用鼠标测试,一定要加 mouseWheel: true,//开启鼠标滚轮,disableMouse: false,//启用鼠标拖动。不然鼠标就会滑不动,在上线移动端的时候,要加disableTouch: false//启用手指触摸,(注意是dis开头,所以要状态是false才表示启用!

 watch:{
            list(){
                setTimeout(()=>{
                    this.initScroll()
                },200)
            }
        },
 mounted() {
            this.initScroll()
        },
		methods: {
            initScroll() {
                this.$nextTick(()=>{
                    console.log(this.scroll,this.$refs.wrapper.offsetHeight,this.$refs.cardlist.offsetHeight)
                    //可以打印看看是否内部高度大于外部高度
                    if(!this.scroll) {
                        this.scroll = new BScroll(this.$refs.wrapper,{
                            click: true,      // 配置允许点击事件
                            scrollY: true,   // 开启纵向滚动
                            mouseWheel: true,//开启鼠标滚轮
                            disableMouse: false,//启用鼠标拖动
                            disableTouch: false//启用手指触摸
                        })
                        console.log(this.scroll)
                    } else {
                        this.scroll.refresh()    // 重新计算 better-scroll,当 DOM 结构发生变化的时确保滚动效果正常
                        console.log(this.scroll)
                    }
                })
            },
            }

以上就是我在使用better scroll是遇到的坑,希望有帮助到大家~

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值