这段代码是一个小程序的滚动组件,使用了微信小程序的组件scroll-view来实现滚动。其中包括了下拉刷新和上拉加载更多的功能,以及回到顶部的按钮。具体解释如下:

  1. 整体结构

该组件的整体结构如下:

<view class="mescroll-uni-warp">
  <scroll-view class="{{['mescroll-uni',(fixed)?'mescroll-uni-fixed':'']}}" style="{{'padding-top:'+(padTop)+';'+('padding-bottom:'+(padBottom)+';')+('top:'+(fixedTop)+';')+('bottom:'+(fixedBottom)+';')}}" id="{{viewId}}" scroll-top="{{scrollTop}}" scroll-with-animation="{{scrollAnim}}" scroll-y="{{scrollAble}}" throttle="{{mescroll.optUp.onScroll==null}}" enable-back-to-top="{{true}}" data-event-opts="{{[['scroll',[['scroll',['$event']]]],['touchstart',[['touchstartEvent',['$event']]]],['touchmove',[['touchmoveEvent',['$event']]]],['touchend',[['touchendEvent',['$event']]]],['touchcancel',[['touchendEvent',['$event']]]]]}}" bindscroll="__e" bindtouchstart="__e" bindtouchmove="__e" bindtouchend="__e" bindtouchcancel="__e">
    <view style="{{'transform:'+(translateY)+';'+('transition:'+(transition)+';')}}">
      <!-- 下拉刷新 -->
      <block wx:if="{{mescroll.optDown.use}}">
        <view class="mescroll-downwarp">
          <view class="downwarp-content">
            <view class="{{['downwarp-progress',(isDownLoading)?'mescroll-rotate':'']}}" style="{{'transform:'+(downRotate)+';'}}"></view>
            <view class="downwarp-tip">{{downText}}</view>
          </view>
        </view>
      </block>
      <!-- 内容插槽 -->
      <slot></slot>
      <!-- 空数据提示 -->
      <block wx:if="{{isShowEmpty}}">
        <view class="{{['mescroll-empty',(optEmpty.fixed)?'empty-fixed':'']}}" style="{{'z-index:'+(optEmpty.zIndex)+';'+('top:'+(optEmpty.top)+';')}}">
          <block wx:if="{{optEmpty.icon}}">
            <image class="empty-icon" src="{{optEmpty.icon}}" mode="widthFix"></image>
          </block>
          <block wx:if="{{optEmpty.tip}}">
            <view class="empty-tip">{{optEmpty.tip}}</view>
          </block>
          <block wx:if="{{optEmpty.btnText}}">
            <view data-event-opts="{{[['tap',[['emptyClick',['$event']]]]]}}" class="empty-btn" bindtap="__e">{{optEmpty.btnText}}</view>
          </block>
        </view>
      </block>
      <!-- 上拉加载更多 -->
      <block wx:if="{{mescroll.optUp.use}}">
        <view class="mescroll-upwarp">
          <view hidden="{{!(isUpLoading)}}">
            <view class="upwarp-progress mescroll-rotate"></view>
            <view class="upwarp-tip">{{mescroll.optUp.textLoading}}</view>
          </view>
          <block wx:if="{{!isDownLoading&&isUpNoMore}}">
            <view class="upwarp-nodata">{{mescroll.optUp.textNoMore}}</view>
          </block>
        </view>
      </block>
    </view>
  </scroll-view>
  <!-- 回到顶部按钮 -->
  <block wx:if="{{mescroll.optUp.toTop.src}}">
    <image class="{{['mescroll-totop',(isShowToTop)?'mescroll-fade-in':'']}}" src="{{mescroll.optUp.toTop.src}}" mode="widthFix" data-event-opts="{{[['tap',[['toTopClick',['$event']]]]]}}" bindtap="__e"></image>
  </block>
</view>

其中,<view class="mescroll-uni-warp"> 是最外层的容器,<scroll-view> 是滚动容器,<slot> 是内容插槽,<block wx:if="{{...}}"> 是条件渲染的语法。

  1. 下拉刷新

下拉刷新包括了一个下拉刷新区域和一个下拉刷新动画,其中下拉刷新区域包括了一个下拉提示文本和一个下拉刷新动画。代码如下:

<block wx:if="{{mescroll.optDown.use}}">
  <view class="mescroll-downwarp">
    <view class="downwarp-content">
      <view class="{{['downwarp-progress',(isDownLoading)?'mescroll-rotate':'']}}" style="{{'transform:'+(downRotate)+';'}}"></view>
      <view class="downwarp-tip">{{downText}}</view>
    </view>
  </view>
</block>

其中,mescroll.optDown.use 表示是否开启下拉刷新功能,isDownLoading 表示是否正在下拉刷新,downRotate 表示下拉刷新动画的旋转角度,downText 表示下拉提示文本。

  1. 空数据提示

空数据提示包括了一个空数据提示区域和一个空数据提示动画,其中空数据提示区域包括了一个空数据提示文本和一个空数据提示按钮。代码如下:

<block wx:if="{{isShowEmpty}}">
  <view class="{{['mescroll-empty',(optEmpty.fixed)?'empty-fixed':'']}}" style="{{'z-index:'+(optEmpty.zIndex)+';'+('top:'+(optEmpty.top)+';')}}">
    <block wx:if="{{optEmpty.icon}}">
      <image class="empty-icon" src="{{optEmpty.icon}}" mode="widthFix"></image>
    </block>
    <block wx:if="{{optEmpty.tip}}">
      <view class="empty-tip">{{optEmpty.tip}}</view>
    </block>
    <block wx:if="{{optEmpty.btnText}}">
      <view data-event-opts="{{[['tap',[['emptyClick',['$event']]]]]}}" class="empty-btn" bindtap="__e">{{optEmpty.btnText}}</view>
    </block>
  </view>
</block>

其中,isShowEmpty 表示是否显示空数据提示,optEmpty 是空数据提示的配置对象,包括了提示文本、按钮文本和按钮点击事件等。

  1. 上拉加载更多

上拉加载更多包括了一个上拉加载更多区域和一个上拉加载更多动画,其中上拉加载更多区域包括了一个上拉提示文本和一个上拉加载更多动画。代码如下:

<block wx:if="{{mescroll.optUp.use}}">
  <view class="mescroll-upwarp">
    <view hidden="{{!(isUpLoading)}}">
      <view class="upwarp-progress mescroll-rotate"></view>
      <view class="upwarp-tip">{{mescroll.optUp.textLoading}}</view>
    </view>
    <block wx:if="{{!isDownLoading&&isUpNoMore}}">
      <view class="upwarp-nodata">{{mescroll.optUp.textNoMore}}</view>
    </block>
  </view>
</block>

其中,mescroll.optUp.use 表示是否开启上拉加载更多功能,isUpLoading 表示是否正在上拉加载更多,isUpNoMore 表示是否已经加载完了所有数据,mescroll.optUp.textLoading 表示上拉加载更多的提示文本,mescroll.optUp.textNoMore 表示已经加载完所有数据的提示文本。

  1. 回到顶部按钮

回到顶部按钮包括了一个回到顶部按钮和一个回到顶部动画,其中回到顶部按钮可以自定义图片和点击事件。代码如下:

<block wx:if="{{mescroll.optUp.toTop.src}}">
  <image class="{{['mescroll-totop',(isShowToTop)?'mescroll-fade-in':'']}}" src="{{mescroll.optUp.toTop.src}}" mode="widthFix" data-event-opts="{{[['tap',[['toTopClick',['$event']]]]]}}" bindtap="__e"></image>
</block>

其中,mescroll.optUp.toTop.src 表示回到顶部按钮的图片路径,isShowToTop 表示是否显示回到顶部按钮,toTopClick 是回到顶部按钮的点击事件


原文地址: https://www.cveoy.top/t/topic/datA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录