zoukankan      html  css  js  c++  java
  • better-scroll使用总结

    参考:https://zhuanlan.zhihu.com/p/27407024

     

    better-scroll使用小结

    核心就是这4个

     1 <script>
     2 import BScroll from 'better-scroll'
     3 const ERR_OK=0;
     4 export default{
     5     props:['seller'],
     6     data(){
     7         return{
     8             goods:[],
     9             listHeight:[],
    10             scrollY: 0
    11         }
    12     },
    13     created(){
    14         this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee'];
    15         var _this=this;
    16         this.$axios.get('/apis/goods').then(function(res){
    17             var res=res.data;
    18             if(res.errno===ERR_OK){
    19                 _this.goods=res.data;
    20                 console.log(_this.goods);
    21                 /*Vue实现响应式并不是数据发生变化之后DOM立即变化,而是按一定的策略进行DOM的更新*/
    22                 /*$nextTick是在下次DOM更新循环结束之后执行延迟回调,在修改数据之后使用 $nextTick,则可以在回调中获取更新后的 DOM*/
    23                 _this.$nextTick(() => {
    24           _this._initScroll();
    25           _this._calculateHeight();
    26         });
    27             }
    28         })
    29     },
    30     computed:{
    31         currentIndex(){
    32             for(let i=0;i<this.listHeight.length;i++){
    33                 let height1=this.listHeight[i];
    34                 let height2=this.listHeight[i+1];
    35                 if(!height2 || (this.scrollY>=height1 && this.scrollY<height2)){
    36                     //
    37                     this._followScroll(i);
    38                     return i;
    39                 }
    40             }
    41             return 0;
    42         }
    43     },
    44     methods:{
    45         selectMenu(index,event){
    46             /*为了兼容PC*/
    47             if (!event._constructed) {
    48         return;
    49       }
    50       /**/
    51             let foodList=this.$refs.foodList;
    52             let el=foodList[index];
    53             this.foodsScroll.scrollToElement(el,300);
    54         },
    55         _initScroll(){
    56             this.menuScroll = new BScroll(this.$refs.menuWrapper,{
    57                 click:true
    58             })
    59 
    60             this.foodsScroll = new BScroll(this.$refs.foodsWrapper,{
    61                 click:true,
    62                 probeType:3
    63             });
    64             /*是否派发滚动事件*/
    65             this.foodsScroll.on('scroll',(pos)=>{
    66                 //Math.abs//取正数
    67                 this.scrollY=Math.abs(Math.round(pos.y));
    68             })
    69             /*probeType类型:Number
    70         默认值:0
    71         可选值:1、2、3
    72         作用:有时候我们需要知道滚动的位置。当 probeType 为 1 的时候,会非实时(屏幕滑动超过一定时间后)派发scroll 事件;当 probeType 为 2 的时候,
          会在屏幕滑动的过程中实时的派发 scroll 事件;当 probeType 为 3 的时候,不仅在屏幕滑动的过程中,
          而且在 momentum 滚动动画运行过程中实时派发 scroll 事件。如果没有设置该值,其默认值为 0,即不派发 scroll 事件。
    */ 73 }, 74 _calculateHeight(){ 75 let foodList=this.$refs.foodList; 76 let height=0; 77 this.listHeight.push(height); 78 for(let i=0;i<foodList.length;i++){ 79 let item = foodList[i]; 80 height += item.clientHeight; 81 this.listHeight.push(height); 82 } 83 84 }, 85 _followScroll(index){ 86 let menuList=this.$refs.menuList; 87 let el=menuList[index]; 88 this.menuScroll.scrollToElement(el,300); 89 } 90 } 91 } 92 </script>
    日常所遇,随手而记。
  • 相关阅读:
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    第一周作业
    训练神经网络的一些经验分享
    Latex 安装 教程
    关于python环境的一切注意事项
  • 原文地址:https://www.cnblogs.com/zhihou/p/8274757.html
Copyright © 2011-2022 走看看