scroll html5无效,better-scroll之吸顶效果巨坑挣扎中

今天和大家分享下better-scroll这款移动端用来解决各种滚动需求的插件(目前已经支持pc)

关于其中的api大家可以去官网看下  这里就给大家介绍几种常用的以及需要注意的点是什么

首先说一下better-scroll的使用注意问题吧

1、移动端 我们通常采用三段式进行布局的  例如

可是有的人就会发现有时滚动效果没有作用对吧 嘿、此时第一个注意问题就来了 加载better-scroll的元素只能有一个直属子元素 也就是

剩余布局盒子写在这里
这种形式 并且content这层盒子不能给固定高度  当content的高度大于外层main这个盒子后better-scroll就会生效

2、然后第二点就是今天的重头戏 吸顶效果了

相信用过这款插件的就会知道我们的滚轮在这里是没有作用的 这也意味着onscroll事件不能使用了 那吸顶效果该如何去做才好呢    在better-scroll中给我们提供了这样一个方法  bs.on("scroll",function(e){})  此时的e能够打印出一个关于滚动产生的x y 对象  注意这个方法要想生效我们需要在  这个bs对象中添加probetype这个属性 写法如下

let bs=new bscroll("main",{

probetype:2

})

然后到了这里就有人会说那我们既然能够得到y值那岂不是可以 利用以前的方法 我们给需要吸顶的元素添加一个关于固定定位的class类名就可以对吧   然后此时又引出了better-scroll的另一个巨坑了

fixed定位的元素,如果父级有transform样式,值不为none,那么fixed定位就会失效,scale(),rotate()都会使fixed定位失效。  所以说我们在使用better-scroll事件的盒子里会造成我们的绝对定位失效 从而导致我们的吸顶效果失败     于是本人想出另外一个比较low的方法可以模拟吸顶效果   我们同样可以在scroll这个方法中克隆一下这个需要吸顶的盒子然后 在通过e.y值在达到我们想要的高度时动态添加给除了main任何一个地方  注意这里一定不要加给main   然后在通过绝对定位定在想要位置  不想要的位置再删除  这里删除的时候需要判断是否添加上   添加的时候注意不要多次添加!!!

3、点击事件失效问题

在引用了这个插件后这个盒子内部的元素会出现点击事件失效问题  此时我们需要在bs那个对象中放上这个属性  click:true

4、  返回顶部操作问题

前面说过引入了这个插件后onscroll事件就不会被触发了 那么代表scrolltop也就没有作用了  那么返回顶部操作我们应该怎么办呢

此时better-scroll事件里面有一个方法 bs.scrolltop(0,0,1000) 这个方法可以让我们返回顶部  0,0是返回0,0点位置 第三个参数是返回所用的时间长短

5、上拉加载效果 和 下拉刷新

这里给大家简单介绍几个api的使用

1 let bs = new bscroll("main", {

2 pullupload: true,//上拉

3 pulldownrefresh: true,//下拉

4 //也可以写成对象模式

5 //注意上拉不支持

6 // pulldownrefresh:{

7 // //下拉到一百的位置才会触发

8 // threshold:100,

9 // //然后松手后返回50的位置

10 // stop:50,

11 // }

12 })

13

14 bs.on("pullingdown", function () {

15 //"pullingup 上拉"

16 console.log("下拉刷新");

17 //这个事件开始告诉浏览器开始下拉刷新了

18 //然后进行一些数据的请求

19

20 //当数据请求过来后

21 //告诉浏览器下拉结束

22 bs.finishpullup();//上拉结束

23 bs.finishpulldown();

24 //dom结构发生改变后可以刷新下

25 bs.refresh()

26 })

如果本文对你有所帮助的话 请动动您漂亮的手指点个赞喽~~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值