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

今天和大家分享下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、上拉加载效果 和 下拉刷新

这里给大家简单介绍几个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         })

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

原文地址:https://www.cnblogs.com/cq1715584439/p/10660265.html

时间: 2024-08-18 03:25:14

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

基于scroll的吸顶效果

本次要实现的是一种常见的网页效果,如下: 页面由头部,导航,主体内容三部分组成,当页面发生滚动时,头部逐渐隐藏,导航部分向上移动,直到导航部分距离浏览器顶部为零时,导航部分固定不动,保持吸顶效果,如下所示: 我们分三步实现上面的效果. 首先是页面的基础结构,为了简化操作,将头部.导航部分和主体内容部分全部用图片表示. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-

代码:jquery 吸顶 效果

(只是个简单吸顶效果,还需完善) 吸顶: <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $(window).scroll( function() { var m =$(document).scrollTop(); console.log(

Vue开发——实现吸顶效果

因为项目需求,最近开始转到微信公众号开发,接触到了Vue框架,这个效果的实现虽说是基于Vue框架下实现的,但是同样也可以借鉴到其他地方,原理都是一样的. 进入正题,先看下效果图: 其实js做这个效果还是挺简单的,因为在css中我们可以设置一个元素的position: fixed;,这样它就可以固定在那里,这样不管页面怎么滚动,它的位置都不受影响,所以我们的思路就是在合适的时机把要吸顶的头部元素的position属性设置为fixed就可以了.但是这个合适的时机是什么时候呢,这就需要我们计算了,我们

吸顶效果插件

function Topfixed(options){ var opts = $.extend({ id:'#topFixed', fixedClass:'top-fixed' },options); var fixed = $(opts.id);//获取吸顶目标ID对象 var marginBottom = parseInt(fixed.css('marginBottom')) || 0;//吸顶目标的下边距 //var blank = document.createElement('div'

5行js代码搞定导航吸顶效果

一.HTML布局 首先写HTML布局 <body> <div id="wrap"></div> </body> 二.CSS样式 给点简单的样式 <style> *{ margin: 0; padding: 0; } body{ height: 2000px; background-image: linear-gradient(-180deg, #15f09d 0%, #25A0FF 50%, #fca72b 100%); }

JQ实现吸顶效果代码

吸顶下过代码跟简单几行代码就可以了 如果滚动的军力大于100,就改变导航的定位方式,否则就默认 $(function(){ $(window).scroll(function(){ if($(window).scrollTop()>100){ $(".nav").css({"position":"fixed","top":0,"background":"red","wid

纯CSS实现吸顶效果

position的属性有哪些? {  position: static;  position: relative;  position: absolute;  position: fixed; position: inherit;  position: initial;  position: unset; } 还有一个position的属性值:position: sticky: position: sticky:粘性定位,是相对定位和固定定位的混合.元素在跨越特定阈值前为相对定位,之后为固定定位

支付宝小程序滚动监听吸顶效果

axml部分 <view class=" {{menuFixed ? 'fixed': ''}}" id="affix">菜单栏</view> axss部分 .fixed{position: fixed; top: 0; } js部分 Page({ data: { menuFixed:"", }, // 监听页面滚动距离scrollTop onPageScroll: function(e) { var that = thi

移动端吸顶(iOS与安卓)

有的时候经常会遇到移动端吸顶效果,开始我也只是上网查了一下,分别有iOS和android两种样式,如下: /*!*Android*!*/ .head { position: fixed; top: 0; left: 0; z-index: 5; } /*!*iOS*!*/ .head{ position: -webkit-sticky; position: sticky; top: 0; left: 0; z-index: 5; } 设置之后你会发现只有ios手机的吸顶效果OK了,android