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

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

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

1、移动端 我们通常采用三段式进行布局的  例如 <div class="container">    <header></header><main></main><fotter></fotter>   </div>  假如我们利用弹性盒布局的话  给container  开盒子后我们一般给头部和尾部固定的高度 给main这个中间盒子一个flex:1;和overflow:auto ,让其达到可以自由滚动效果  但是如果我们给main这层中间盒子加载了better-scroll这款插件后 我们需要把auto改成hidden  毕竟给上固定高度百分百(当然这里可以省略)

可是有的人就会发现有时滚动效果没有作用对吧 嘿、此时第一个注意问题就来了 加载better-scroll的元素只能有一个直属子元素 也就是 <main><div class="content">剩余布局盒子写在这里</div></main>这种形式 并且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的使用
 
  let bs = new BScroll("main", {
pullUpLoad: true,//上拉
pullDownRefresh: true,//下拉
//也可以写成对象模式
//注意上拉不支持
// pullDownRefresh:{
// //下拉到一百的位置才会触发
// threshold:100,
// //然后松手后返回50的位置
// stop:50,
// }
}) bs.on("pullingDown", function () {
//"pullingUp 上拉"
console.log("下拉刷新");
//这个事件开始告诉浏览器开始下拉刷新了
//然后进行一些数据的请求 //当数据请求过来后
//告诉浏览器下拉结束
bs.finishPullUp();//上拉结束
bs.finishPullDown();
//DOM结构发生改变后可以刷新下
bs.refresh()
})

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

better-scroll之吸顶效果巨坑挣扎中的更多相关文章

  1. 基于scroll的吸顶效果

    本次要实现的是一种常见的网页效果,如下: 页面由头部,导航,主体内容三部分组成,当页面发生滚动时,头部逐渐隐藏,导航部分向上移动,直到导航部分距离浏览器顶部为零时,导航部分固定不动,保持吸顶效果,如下 ...

  2. react.js中实现tab吸顶效果问题

    在react项目开发中有一个需求是,页面滚动到tab所在位置时,tab要固定在顶部. 实现的思路其实很简单,就是判断当滚动距离scrollTop大于tab距离页面顶部距离offsetTop时,将tab ...

  3. Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)

    Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之 ...

  4. tabControl组件的吸顶效果

    最开始,还没有使用better-scroll插件的时候,直接在class中设定了一定的position为sticky,设置一定的top达成了效果.但是,使用better-scroll组件后,这些属性就 ...

  5. 自定义tab吸顶效果一(原理)

    PS:问题:什么是吸顶,吸顶有什么作用,吸顶怎么使用? 在很多app商城中,介绍软件的时候就会使用吸顶效果, 吸顶有很多作用,一个最简单粗暴的作用就是,让用户知道此刻在浏览哪个模块,并可以选择另外的模 ...

  6. Html吸顶效果

    Html吸顶效果 一.HTML HTML中需要给div一个id <!DOCTYPE html> <html lang="en"> <head> ...

  7. js之吸顶效果

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. [RN] React Native 头部 滑动吸顶效果的实现

    React Native 头部 滑动吸顶效果的实现 效果如下图所示: 实现方法: 一.吸顶组件封装 StickyHeader .js import * as React from 'react'; i ...

  9. js 实现吸顶效果 || 小程序的吸顶效果

    小程序吸顶效果 <!--index.wxml--> <view class="container"> <view class='outside-img ...

随机推荐

  1. 在android工程中,res目录下又有anim、drawable、layout、menu、raw、values和xml文件夹,分别用来保存?

    res目录主要是存放资源文件的!layout 布局 这个就是你经常看到的与用户交互的界面的 xml 文件,就是各个 view 的排列和嵌套,没什 么好说的啦 风格和主题. 风格主要是指 view 的显 ...

  2. Error:Execution failed for task ':app:preDebugAndroidTestBuild'.错误解决

    在新建布局文件的时候,页面显示: design editor is unavailable until a successful build(设计编辑器不可用,直到成功创建.) 细看下面还有一行错误: ...

  3. 带你从零学ReactNative开发跨平台App开发(十)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  4. spring boot(9)-mybatis关联映射

    一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String ...

  5. Sun Solairs系统添加裸设备

    Sun Solaris系统添加裸设备对表空间进行扩容的大体操作步骤. 1.查看当前卷组信息 --查看当前卷组信息#vxdg list --查看当前卷组中物理磁盘的使用情况#vxdg free |gre ...

  6. 数据契约(DataContract)里的DataMember特性

      数据契约(DataContract) 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可 ...

  7. Struts-config.xml配置文件《action-mappings》元素的详解

    原文地址:http://blog.163.com/sara1124@126/blog/static/11291097020105125537114/ action-mappings 该元素用于将Act ...

  8. Azure Document DB 存储过程、触发器、自定义函数的实现

    阅读 大约需要 4 分钟 在上一篇随笔中记录的是关于Azure Cosmos DB 中SQL API (DocumentDB) 的简介和Repository 的实现.本随笔是Document DB 中 ...

  9. JDBC 连接mysql获取中文时的乱码问题

    前段时间学习JDBC,要连接mysql获取数据.按照老师的样例数据,要存一些名字之类的信息,用的都是英文名,我当时就不太想用英文,就把我室友的名字存了进去,嘿嘿,结果,出问题了. 连接数据库语句: s ...

  10. Aria2 无限制下载神器

    Aria2 是一款免费开源跨平台且不限速的多线程下载软件,Aria2的优点是速度快.体积小.资源占用少:支持 HTTP / FTP / BT / Magnet 磁力链接等类型的文件下载:支持 Win. ...