微信小程序实例:跳转到顶部实例

本文转载至http://blog.csdn.net/eadio/article/details/53190624

前瞻:

总所周知,小程序不能操作dom,那么我们要怎么实现在页面滚动到一定条件的时候,显示gotop图标,点击后跳转到页面的顶部呢?

这里小程序有个组件是可以实现的,那就是scroll-view组件,他具有很多的属性,其中我们要利用到以下两个属性来处理:

scroll-top  Number      设置竖向滚动条位置
bindscroll  EventHandle     滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}  

通过滚动触发事件,获取距离文档顶部的scrollTop值,当达到一定条件【>300】的时候,显示gotop层,针对这个层写点击事件,重新设置scroll-top值,偶然间发现设置scroll-top的一个bug,如果我下一次设置的值和本次scroll-top值是一样的,那么文档并不会有任何动作。因此我的做法是在0和1之间切换设置,具体做法如下:

<scroll-view style="height: 100%;" scroll-y="true" scroll-top="{{scrollTop.scroll_top}}" bindscroll="scrollTopFun">  
<view style="height: 11111rpx; border: solid 1px red;">  
123456  
----{{test}}  
</view>  
</scroll-view>  
  
<view style="position: absolute; bottom: 50rpx; right: 30rpx; width: 120rpx; height: 120rpx; border: solid 1px green;" wx:if="{{scrollTop.goTop_show}}" catchtap="goTopFun"></view>  
//js文件
Page({  
  data:{  
  
    test:"",  
    scrollTop: {  
      scroll_top: 0,  
      goTop_show: false  
    }  
  },  
  scrollTopFun: function(e){  
    console.log(e.detail);  
    if(e.detail.scrollTop > 300){//触发gotop的显示条件  
      this.setData({  
        'scrollTop.goTop_show': true  
      });  
      console.log(this.data.scrollTop)  
    }else{  
      this.setData({  
        'scrollTop.goTop_show': false  
      });  
    }  
  },  
  goTopFun: function(e){  
    var _top=this.data.scrollTop.scroll_top;//发现设置scroll-top值不能和上一次的值一样,否则无效,所以这里加了个判断  
    if(_top==1){  
      _top=0;  
    }else{  
      _top=1;  
    }  
    this.setData({  
      'scrollTop.scroll_top': _top  
    });  
    console.log("----");  
    console.log(this.data.scrollTop)  
  }  
})  

最终演示效果如下:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容