H5页面(四)效果之实现页面滚动--------better-scroll插件

前端开发一起交流QQ群:740034288

下载并用better.scroll.js文件;<script src="https://unpkg.com/better-scroll/dist/bscroll.min.js"></script>

中文文档:https://ustbhuangyi.github.io/better-scroll/doc/zh-hans/

1. 在vue项目中应用better-scroll:

npm install --save better-scroll ;

import Bscroll from "better-scroll";

<div  ref='leftWrap' class="wrap">

        <div class="wrap-content">

                //滚动的所有内容写在这里里面

        </div>

</div>

.wrap{   //通过相对/绝对定位固定.wrap的宽高

    width:100%;

    position:absolute;

    top:350px;

    bottom:0;

    left:0;

}

注意:.wrap需要固定宽高,.wrap-content可以为默认样式,但是滚动的内容需要写在里面.

this.$nextTick(()=>{     //一定要在页面从后台获取数据完成之后,且渲染视图DOM完成之后

                                    //实例better-scroll

this.leftBscroll=new Bscroll(this.$refs.leftWrap,{     //实例化Bscroll并赋值给leftBscroll变量
                  click:true      //better-scroll会默认阻止一些事件,所有需要在这里开启左侧目录可以点击,右

                                        侧滚动到相应目录下,this.$refs.leftWrap表示哪个元素容器里面的内容滚动,

                                        在vue的元素中<div  ref='leftWrap'></div>              

  });

})

 better-scroll 的初始化时机很重要,因为它在初始化的时候,会计算父元素和子元素的高度和宽度,来决定是否可以纵向和横向滚动。因此,我们在初始化它的时候,必须确保父元素和子元素的内容已经正确渲染了。如果子元素或者父元素 DOM 结构发生改变的时候,必须重新调用 scroll.refresh() 方法重新计算来确保滚动效果的正常。 better-scroll 不能滚动的原因多半是初始化 better-scroll 的时机不对,或者是当 DOM 结构发送变化的时候并没有重新计算 better-scroll。

this.$nextTick 是一个异步函数,确保了 DOM 已经渲染
Vue中应用better-scroll是 created 这个钩子函数里请求数据而不是放到 mounted 的钩子函数里?因为 requestData 是发送一个网络请求,这是一个异步过程,当拿到响应数据的时候,Vue 的 DOM 早就已经渲染好了,但是数据改变 —> DOM 重新渲染仍然是一个异步过程,所以即使在我们拿到数据后,也要异步初始化 better-scroll。

2. 在html里面直接应用better-scroll:

问题二:原生js下怎么引用better-scroll插件?
解决:
<script src="https://unpkg.com/better-scroll/dist/bscroll.min.js"></script>
var rankBox=document.querySelector(".rank-box");
var scroll=new BScroll(rankBox);

案例:

猜你喜欢

转载自blog.csdn.net/qq_42231156/article/details/80606066