BetterScroll 2.x 的 pulldown 使用、pullup使用

article/2025/10/30 5:48:01

官方文档:https://better-scroll.github.io/docs/zh-CN/plugins/

BetterScrol滚动原理

  • 有唯一的子节点
  • 子节点必须超出包裹的高度
  • new BScroll(‘容器名’) html内容必须已经渲染完成
    在这里插入图片描述
    绿色部分为 wrapper,也就是父容器,它会有固定的高度
    黄色部分为 content,它是父容器的第一个子元素,它的高度会随着内容的大小而撑高。
    那么,当 content 的高度不超过父容器的高度,是不能滚动的,而它一旦超过了父容器的高度,我们就可以滚动内容区了,这就是 BetterScroll 的滚动原理。

pulldown 简单使用

首先引入 pulldown 插件,并通过静态方法 BScroll.use() 初始化插件:

import BScroll from '@better-scroll/core'   //要先引入BetterScroll插件
import PullDown from '@better-scroll/pull-down'   //再引入 pulldown 插件BScroll.use(PullDown)

然后,实例化 BetterScroll 时需要传入 pulldown 相关配置项 pullDownRefresh:

async render() { // 因为我们必须让数据先加载完,再去加载BScroll,才能显示下拉效果,所以要用await等this.getList()加载完$("#main").html(positionCon);//先把position.html页面内容加进主页面的main部分await this.getList();//拿到模拟数据// 实例化 BetterScroll,传入 pulldown 相关配置(第一个参数''里面的是容器名)new BScroll('#position-container',{scrollY:true,//pullDownRefresh:true,//如果超过40,会默认stop到40pullDownRefresh:{stop:0 //这样就会回到顶部了},})
}

关键html内容设置:

//  不变的
<div class="job-top"><span>10秒钟定制职位<!-- 10秒钟定制职位  <%=data1%> --><!-- <%=data1%> 接收穿过来的参数 --></span><button>去登录</button>
</div>// 滚动变化的,必须保证子节点唯一,所以嵌套一层div 
<div id="position-container"><div class="position-list"></div>
</div>

关键样式设置:

main {overflow: hidden;/*我们用better-scroll插件的pulldown分支插件另外实现了下拉效果*//* overflow: scroll;*/
}
#position-container{height: 100%;
}

来看下结果:登录部分不会动,设置了id="position-container"的中间部分下拉会动
在这里插入图片描述

配置项 pullDownRefresh

  • 默认为 false。
  • 当设置为 true 或者是一个 Object 的时候,可以开启下拉刷新。
  • 当配置项为一个 Object 时,有如下属性:
    在这里插入图片描述
this.scroll = new BScroll('#position-container',{scrollY:true,pullDownRefresh:{stop:0,threshold:40},
})

方法 finishPullDown()

介绍:标识一次下拉动作结束。
注意:每次触发下拉事件后,在回调函数的最后,都应该调用 finishPullDown() 方法。在 finishPullDown() 方法调用前不会触发下一次的 pullingDown 事件。

// 下拉刷新
// 因为this.getList();是异步执行,所以加上await,等数据请求完毕再执行this.scroll.finishPullDown()结束下拉动作。
this.scroll.on("pullingDown",async ()=>{await this.getList();//实际是重新再请求一次数据this.scroll.finishPullDown();
})

钩子

BetterScroll 除了提供了丰富的 API 调用,还提供了一些事件,方便和外部做交互。你可以利用它们实现一些更高级的 feature。
查看文档:API 钩子
刚才上面finishPullDown()的例子中就用到了"pullingDown"事件,现在想在滚动过程中显示一行 “下拉刷新” 的文字,所以需要用到"scroll"这个事件:

scroll
参数:{Object} {x, y} 滚动的实时坐标
触发时机:滚动过程中。
// 使用钩子scroll事件在下拉过程中显示一些信息,此处我想要显示“下拉刷新”
this.scroll.on("scroll",function(){// 不能用箭头函数,因为我们要用触发当前事件的对象this进行操作,所以不能改变this指向console.log(this.y);if(this.y>10){$(".posi_ref").show();}else{$(".posi_ref").hide();}
})

可以看到,每次下拉,都会显示“下拉刷新”,松开又会隐藏;右侧是请求数据展示;
另外,每次数据加载都会有loading.gif图片显示,当加载完毕,就会隐藏。
在这里插入图片描述
疑问:既然"pullingDown"也是下拉触发,为什么还要另外用"scroll"呢?
解答:因为"pullingDown"是下拉松开后才触发数据,不是我们想要的交互效果。

this.scroll.on("pullingDown",async ()=>{console.log("pullingDown");$(".posi_ref").show();//请求数据前“下拉刷新”显示await this.getList();//实际是重新再请求一次数据this.scroll.finishPullDown();$(".posi_ref").hide();//请求数据后“下拉刷新”隐藏
})

在这里插入图片描述

pullup简单使用(跟pulldown 差不多)

通过静态方法 BScroll.use() 初始化插件

import BScroll from '@better-scroll/core'
import Pullup from '@better-scroll/pull-up'BScroll.use(Pullup)

然后,实例化 BetterScroll 时需要传入 pullup 相关配置项 pullUpLoad:

new BScroll('.bs-wrap', {scrollY: true,pullUpLoad: true
})

配置项 pullUpLoad

默认为 false。当设置为 true 或者是一个 Object 的时候,可以开启上拉加载。当配置项为一个 Object 时,有如下属性:
在这里插入图片描述

pullingUp 事件

触发时机:当距离滚动到底部小于 threshold 值时,触发一次 pullingUp 事件。

refresh()

查看文档:方法
作用:重新计算 BetterScroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常。

做翻页效果,一页限制数据显示条数

做分页,使用?_page和可选的_limit来分页返回的数据

// 上拉加载更多(翻页)
this.scroll.on('pullingUp', async () => {if (!this.isMoreData) {$(".posi_load").hide();//隐藏“加载更多”文字return;}console.log("pullingUp");this.pageNum++;//如果有更多数据,就翻页,下次就会请求第二页的数据await this.getList();//请求数据this.scroll.finishPullUp();//上拉加载动作结束,在 finishPullUp() 方法调用前不会触发下一次的 pullingUp 事件。this.scroll.refresh();//重新计算 BetterScroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常
})

http://chatgpt.dhexx.cn/article/mCiHqSKy.shtml

相关文章

【超详细】output level 和 pull up/ pull down 的真正区别

目录 【超详细】output level 和 pull up/ pull down 的真正区别1. Output Level2. Pull up/ Pull down3. 两者的区别1&#xff09;对于Output口来说2&#xff09;而对于Input口来说 总结参考资料 【超详细】output level 和 pull up/ pull down 的真正区别 今天在使用stm32f1…

OUTPUT,INPUT,INPUT_PULLUP三种模式的区别

一&#xff0c;首先三种模式都需要由pinMode()函数来设置。 &#xff08;1&#xff09;设置引脚 为输出&#xff08;OUTPUT&#xff09;模式&#xff0c;此时引脚为低阻抗状态&#xff0c;可以向其他电路原件提供电流&#xff08;通常为40mA以内&#xff09; &#xff08;2&a…

Pull Up Method(函数上移)

动机 避免行为重复是很重要的。尽管重复的两个函数也可以各自工作得很好&#xff0c;但重复自身只会成为错误的滋生地&#xff0c;此外别无价值。无论何时&#xff0c;只要系统之内出现重复&#xff0c;你就会面临“修改其中一个却未能修改另一个”的风险。通常&#xff0c;找…

GPIO_PULLUP,PULLDOWN, NOPULL

NOPULL: 对于输出IO&#xff0c;配置为NOPULL&#xff0c;当IO输出高电平时&#xff0c;IO为1&#xff0c; 当IO输出低电平时&#xff0c;IO为0&#xff1b; PULLUP&#xff1a; 对于输入IO, 默认为高电平&#xff0c;当需要改变为低电平时配置为PULLUP。 比如&#xff1a;K…

pullup和pulldown在verilog中的使用方法

0 前言 这段时间涉及到了IO-PAD&#xff0c;在IO-PAD的RTL的时候注意到了pullup和pulldown&#xff0c;对这个知识比较好奇&#xff0c;就研究了一下&#xff0c;顺便记录下来&#xff0c;IO-PAD的内容等我再研究研究再考虑记录吧 >_< 1 pullup和pulldown的介绍 pullu…

电阻(4)之上拉电阻与下拉电阻详解

原文地址点击这里: 上拉(Pull Up )或下拉(Pull Down)电阻(两者统称为“拉电阻”)最基本的作用是:将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉),无论它的具体用法如何,这个基本的作用都是相同的,只是在不同应用场合中会对电阻的阻值…

解决安装文件时2502、2503错误

在安装文件时有时会出现2502、2503错误&#xff0c;重复安装也不会有什么改变&#xff0c;让人很是头疼。这种问题一般是权限的问题导致的&#xff0c;一般有两种解决办法&#xff0c;第一种就是提升当前用户的权限&#xff0c;第二种就是直接使用CMD安装&#xff0c;这里主要说…

java卸载错误2503_修复控制面板卸载程序时提示错误代码2502、2503的方法

在平常生活中大家是如何卸载软件的呢&#xff1f;有的用户会使用第三方工具&#xff0c;例如软件管家等来进行卸载&#xff0c;这样操作的用户占大多数&#xff0c;但是无法将软件卸载干净。有的用户会直接将安装目录全部删掉&#xff0c;这样操作的用户较少。最理想的卸载软件…

联发科MT2503D处理器详细参数介绍

MT2503D集成了一个ARM7EJ-STM内核&#xff0c;它是运行高级gsm协议软件的主处理器&#xff0c;以及多媒体应用程序、单数字信号处理器核&#xff0c;它管理低层 层次调制解调器和先进的音频功能&#xff0c;嵌入式处理器运行蓝牙基带和链路控制协议和蓝牙无线电控制。 MT 2503…

java内部错误2503_win10安装和卸载Java jdk错误出现2503,2502错误

本人android studio3.0运行helloworld都报错,打开不了守护进程,然后看网上说java版本可能不对,想卸载java,发现任务管理器怎么都卸载不了,网上说的两个办法都试了没用,一天的挣扎,终于找到下面网址的解决办法。 在使用java安装程序时,有时候会出现安装和卸载失败的问题…

MT2503D完整规格书,MT2503D daatsheet资料下载

MT2503D SOC Processor Datasheet MT2503D是一种基于低功耗CMOS工艺的集成前沿电源管理单元、模拟基带和无线电电路的单片芯片。 MT2503D是一个功能丰富和功能非常强大的单芯片解决方案&#xff0c;用于高端GSM/GPRS能力。基于32位ARM7EJ-STMRISC处理器&#xff0c;MT2503D的卓…

java卸载2503,无法安装msi格式软件提示错误代码2502、2503怎么办?

无法安装msi格式软件提示错误代码2502、2503怎么办?一遇英文界面&#xff0c;就感觉心里没底&#xff0c;偏偏薄名女偏逢薄命郎&#xff0c;安装msi格式软件&#xff0c;出现了下面界面&#xff1a; The installer has encountered an unexpected error installing this packa…

python错误2503_Win10卸载python总是提示error2503失败各种解决办法

最近win10的电脑装了python的3.4,然后想卸载,就总是提示error 2053,类似于这种: 下面是我的坎坷解决之路: 1、网上说,任务管理器 --> 详细信息 --> explorer.exe结束任务,结束资源管理器,然后,文件--运行新任务 -- 如下图所示: 然后重复卸载操作,然后还是失败…

解决安装node失败 报错2503

此问题是如何遇到的呢&#xff1f; 在node官网下载的安装包&#xff0c;在安装到最后突然报出一个 2503 的弹窗&#xff0c;具体报错内容如下&#xff1a; 导致安装失败&#xff01; 解决方式&#xff1a; 电脑&#xff1a;window 1. 在win 搜索框 找到 “Windows PowerS…

Nodejs安装时出现2503错误

解决方案&#xff1a; 1、管理员身份运行命令行 2、进入nodejs安装包目录 3、在命令行运行以下指令

安装出现2503 error

输入命令&#xff1a; msiexec /package "D:\TortoiseGit-2.13.0.1-64bit.msi"

MT2503原理图芯片资料整合下载,MT2503处理器概述

MT2503处理器在过去两年里,可以说很火的一款物联网芯片了。就是不知道今年咋样了。我也整理了MT2503的一些技术资料,如:datasheet,源码,参考设计,原理图,FAQ等,比较全面,需要的可在下方留言,笔者来分享给你 下面就来讲讲这款SOC吧。 MT2503芯片是基于ARMv7和采用高…

安装nodejs报错2503

提示&#xff1a;解决安装软件报2503错误的方法&#xff08;windows系统&#xff09; 安装Nodejs报错 背景 背景 提示&#xff1a;发现软件装不上背景步骤 现有windows 10操作系统官网下载安装node 官网地址傻瓜式一步步安装&#xff0c;最后报错如下图&#xff1a;报错原因…

QGis 安装 the error code 2503

1、管理员方式打开 CMD命令行&#xff1b; 2、运行 msiexec /package "E:\QGIS-OSGeo4W-3.22.5-1.msi" &#xff1b;

【推荐系统】:协同过滤和基于内容过滤概述

【推荐系统】&#xff1a;协同过滤和基于内容过滤概述 &#x1f338;个人主页&#xff1a;JOJO数据科学&#x1f4dd;个人介绍&#xff1a;统计学top3高校统计学硕士在读&#x1f48c;如果文章对你有帮助&#xff0c;欢迎✌关注、&#x1f44d;点赞、✌收藏、&#x1f44d;订阅…