移动排版better-scroll的用法

新手快速掌握better-scroll的常用API
汇集配套功能的方法: 例如上拉刷新: 需开启,需监听,需完成

纵向的排版

HTML:

 <!-- 1. 需要一个包裹容器 -->
        <section class="wrap">
            <!-- 滑动模块 -->
            <div>
                <!-- 内容区域 -->
                content
            </div>
        </section>

css:

// 包裹盒子
.wrap {
    height: 100%;
    >div {
        min-height: 100.1%; // 以防内容太少,导致滚动失败,可以通过js获取父元素高度 + 1px
    }
}

// 内容盒子
.content {
    
}

JS:

<script src="./js/bscroll.min.js"></script>
<script>
    window.onload = function () {
        var bScroll = new BScroll('.wrap', {
                scrollY: true // 默认
        });
    }
</script>

横向排版

HTML

<div class="menu-wrap">
    <div>
        <div class="content-nav">
            <span>菜单1</span>
            <span>菜单2</span>
            <span>菜单3</span>
            <span>菜单4</span>
            <span>菜单5</span>
            <span>菜单6</span>
            <span>菜单7</span>
            <span>菜单8</span>
            <span>菜单9</span>
            <span>菜单10</span>
        </div>
    </div>
</div>

CSS

.menu-wrap {
    position: relative;
    height: px2rem(80);
    line-height: px2rem(80);
}

.menu-wrap>div {
    position: absolute;
}

.content-nav {
    display: flex;
    span {
       width: px2rem(100);
        margin: 0 px2rem(20);
    }
}

JS

var bScroll = new BScroll('.menu-wrap', {
        scrollX: true
});

常用方法

  1. refresh(); =>重新计算 better-scroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常
 bScroll.refresh()
  1. scrollTo(x, y, time, easing); => 滚动到指定的位置
    x: x轴位置,
    y: y轴位置
    time: 滚动动画时长
easing: 缓动函数 不建议修改
bScroll.scrollTo(0, -100, 1000);
  1. scrollToElement(el, time, offsetX, offsetY, easing); =》 滚动到指定元素
    el:目标元素, 支持传入元素对象,字符串则以querySelector获取
    time: 滚动动画执行时长(ms), 默认0ms
    offsetX 相对于目标元素的横轴偏移量 ,true表示为中心
    offsetY 相对于目标元素的纵轴偏移量 ,true表示为中心
bScroll.scrollToElement('li:nth-child(10)', 1000)
  1. destroy(); 销毁better-scroll, 解绑事件

常用事件

  1. scroll: 监听滚动事件,
    必须开启: probeType: 1 | 2 | 3

probeType:

1). 当 probeType 为 1 的时候,会非实时(屏幕滑动超过一定时间后)派发scroll 事件;
2). 当 probeType 为 2 的时候,会在屏幕滑动的过程中实时的派发 scroll 事件;
3). 当 probeType 为 3 的时候,不仅在屏幕滑动的过程中,而且在 momentum 滚动动画运行过程中实时派发 scroll 事件

var bScroll = new BScroll('.wrap', {
     
        probeType: 3
});

bScroll.on('scroll', function (obj) {
    // obj: 位置(坐标)信息对象 {x, y}
})
  1. scrollEnd: 滚动结束触发
 bScroll.on('scrollEnd', function (obj) {
    // obj: 位置(坐标)信息对象 {x, y}
})
  1. pullingDown: 在一次下拉刷新的动作后,这个时机一般用来去后端请求数据。

1). 需要pullDownRefresh属性支持:
设置为true:可以开启下拉刷新,
设置为对象:
threshold: 可以配置顶部下拉的距离(threshold)决定刷新时机
stop: 回弹停留的距离(stop)
2). 需要finishPullDown()收尾
当下拉刷新数据加载完毕后,需要调用此方法告诉 better-scroll 数据已加载

var bScroll = new BScroll('.wrap', {
    // pullDownRefresh: true // 默认stop: 40
    pullDownRefresh: {
        threshold:90,
        stop: 0
    }
});

bScroll.on('pullingDown', function () {
    console.log('我想刷新数据');
    // 干点啥
    bScroll.finishPullDown();

})
  1. pullingUp: 在一次上拉加载的动作后,这个时机一般用来去后端请求数据。

1). 需要pullUpLoad属性支持
设置为true:可以开启上拉加载,
设置为对象:
threshold: 可以配置顶部上拉的距离(threshold)决定加载时机
stop: 回弹停留的距离(stop)

2). 需要finishPullUp()收尾
当下拉刷新数据加载完毕后,需要调用此方法告诉 better-scroll 数据已加载。

bScroll.on('pullingDown', function () {

    console.log('我想加载数据');
    // 干点啥
    bScroll.finishPullUp();

})

属性

  1. maxScrollX: scroll 最大横向滚动位置
    maxScrollX 是负值:
bScroll.maxScrollX = -400;
  1. maxScrollY: scroll 最大纵向滚动位置
    maxScrollY 是负值
bScroll.maxScrollY = -400;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容