赞
踩
用于移动端开发,让滚动更加丝滑
npm install --save better-scroll@1.15.2
封装成一个组件,方便复用,代码如下
<template> <div class="wrapper" ref="wrapper"> <div> <slot></slot> </div> </div> </template> <script> import BScroll from 'better-scroll' export default { name: "Scroll", props: { probeType: { type: Number, default: 0 }, pullUpLoad: { type: Boolean, default: false } }, data() { return { scroll: null, message: '哈哈哈' } }, mounted() { // 1.创建BScroll对象 this.scroll = new BScroll(this.$refs.wrapper, { click: true, probeType: this.probeType, pullUpLoad: this.pullUpLoad }) // 2.监听滚动的位置 if (this.probeType === 2 || this.probeType === 3){ this.scroll.on('scroll', (position) => { // console.log(position); this.$emit('scroll', position) }) } // 3.监听上拉事件 if (this.pullUpLoad){ this.scroll.on('pullingUp', () => { this.$emit('pullingUp') }) } }, methods: { scrollTo(x, y, time=300) { this.scroll && this.scroll.scrollTo(x, y, time) }, finishPullUp() { this.scroll && this.scroll.finishPullUp() }, refresh() { console.log('----') this.scroll && this.scroll.refresh() }, getScrollY(){ return this.scroll ? this.scroll.y : 0 } } } </script> <style scoped> </style>
默认情况下不能监听滚动位置,传入probeType
pullUpLoad
默认是false,不能监听pullingUp事件
true时,可以监听pullingUp事件,当拉到底部时触发,可以实现上拉加载更多的功能
<script>
import Scroll from '@/components/common/scroll/Scroll'
</script>
export default {
name: "Category",
components: {
Scroll
}
}
把要滚动的内容放入,不滚动的放在外面,排序默认从上到下
<template>
<div id="profile"> //根标签
...不需要滚动的内容,比如导航栏
<scroll class="content">
...要滚动的内容
<scroll>
...不需要滚动的内容,比如底部tabbar
<div/>
</template>
滚动区高度=可视区高度-上不滚动区域高度-下不滚动区域高度
设置的height为滚动区的高度
<style scoped>
.content {
height: 300px;
overflow: hidden;
}
</style>
根标签设置相对定位,scroll设置绝对定位.
通过子绝父相,设置top和bottom值,决定滚动区的高度.
top是上不滚动区域高度,bottom是下不滚动区域高度.
<style scoped>
#profile {
height: 100vh; //必须要有
position: relative;
}
.content {
overflow: hidden;
position: absolute;
top: 44px;
bottom: 100px;
left: 0;
right: 0;
}
</style>
当滚动区里的内容大于滚动区的高度时,就可以滚动.所以滚动区的高度必须设置.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。