使用Better-Scroll遇到的坑

  1. 让绝对定位失效:之前做好的吸顶,用了position:sticky,但引入better-scroll就失效了,因为fixed定位的元素,如果父级有transform样式,值不为none,那么fixed定位就会失效,scale(),rotate()都会使fixed定位失效。这里使用offsetTop来获取滚动的高度,设计好滚到多少开始吸顶
  2. 引入bs之后要注意设置高度,wrapper一定要比内容高度小,如果设置Height:100%-xxpx,那么要注意父元素需要设置高度。
  3. 有时会遇到滚到一半就不能滚动了,是因为刚开始请求的数据不完全,比如图片只请求了一半,这样就会导致bs计算高度不正确,所以需要监听图片加载,执行scroll.refresh()
  4. refresh()报错,找不到该属性,是因为我们把函数的调用放在created中,这个阶段还没有挂载el,自然找不到对象,放在mounted中解决。
  5. 防抖debounce,监听图片加载时@load='imageLoad',如果不设置防抖,那么每加载一张图片就会执行一次监听,十分浪费资源,所以使用防抖来减少这种函数的调用
debounce(func,delay){
	let timer = null;
	return function(...args) {
		if(timer){clearTimeout(timer)}
		timer = setTimeout(()=>{
			func.apply(this,args)
		},delay)
	}
}

better-scroll和原生滚动的区别
原生滚动是整个页面滚动,移动端看会一卡一卡的,十分僵硬。
better-scroll则是设置了一个固定的高度作为滚动区域,内部包裹的内容高度一定高于设置的高度
在这里插入图片描述
相当于是这样的,内部会在外部这个区域内滚动。

6.想监听使用bscroll页面的滚动位置,思路:封装的bscroll组件内发送事件,监听的页面中监听,然后打印position即可。(注意,监听不到滚动是因为probetype没设置为3)

 mounted() {
 //创建实例对象接受bscroll
    this.bscroll = new BScroll(this.$refs.wrapper, {
      click:this.click,
      probeType:this.probeType,
      pullUpLoad:this.pullUpLoad
    })
    //发送滚动事件
    this.bscroll.on('scroll',(position)=>{
      this.$emit('scroll',position)
    })
    //发送上拉加载事件
    this.bscroll.on('pullingUp',()=>{
      this.$emit('loadMore')
    })
  }
};
  1. 使用cubeui时发现,下拉刷新也是使用的better-scroll,刷新时数据确实更新了,但是无法上拉到最底部,原因是数据请求是异步的,better-scroll没请求到最新的高度,所以需要设置一个定时器,调用refresh方法即可。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值