微信小程序展示列表之上拉表头固定顶部

本文介绍如何在微信小程序中实现上拉时表头固定的效果,特别适用于列表头部包含搜索bar或datePicker等控件的情况。通过调整scroll-view的高度和使用onLoad函数获取窗口与表头的高度差,确保在滚动时表头始终保持可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##微信小程序上拉表头固定
下面的例子适合 列表头上有搜索bar或者datePicker之类的控件
wxml中代码 如下

<view class="dateSelection">  
  <text class='dateText'>月份: </text>
  <view class='datePicker'>
    <picker mode="date" value="{{sm}}" 
       start="2001-09" end="2035-10" fields='month' bindchange="handleSMonthChange">
      <view class="picker"> {{sm}}</view>
    </picker>
  </view>
  <text class="middle"></text>
  <view class='datePicker'>
    <picker mode="date" value="{{em}}" 
      start="2001-09" end="2035-10"  fields='month' bindchange="handleEMonthChange">
      <view class="picker"> {{em}}</view>
    </picker>
  </view>
</view>

<view class='table'>
  <view class="tableHeader">
    <view class="firHeader">
      <text>经营归属</text>
    </view>
    <view class="header">
      <text class='firHeaderRow'>场次</text>
    </view>
    <view class="header">
      <text class='firHeaderRow'>人次</text>
    </view>
    <view class="header">
      <text class='firHeaderRow'>票房()</text>
    </view>
    <view class="header">
      <text class='firHeaderRow'>平均票价</text>
    </view>
  </view>
  <scroll-view scroll-x="true" scroll-y="true" style='height:{{tbodyHeight}}px' bindscrolltolower='scrollHandler' class='tbody_scroll'>
  <block  wx:for='{{dataArr}}' wx:key='{{index}}'>
    <view class="tableRows"style='{{index%2==0?"":"background-color:#F7F7F7;"}}' >
      <view class='firHeader'>
        <text>{{index==0?'':index+'、'}}{{item.dname}} </text>
      </view>
      <view class="header">
        <text class='firHeaderRow'>{{item.changci}}</text>
      </view>
      <view class="header">
        <text class='firHeaderRow'>{{item.renci}} </text>
      </view>
      <view class="header">
        <text class='firHeaderRow'>{{item.pf}}</text>
      </view>
      <view class="header"> 
        <text class='firHeaderRow'>{{item.avgprice}}</text>
      </view>
    </view>
  </block>
  </scroll-view>
</view>

js 的代码块 关键代码

Page({
  /**
   * 页面的初始数据
   */
  data: {  
    dataArr: [],
    tbodyHeight: 500
  },
onLoad: function (options) {    
	/**关键是 找到当前窗口的高度 和表头的高度 窗口高度-表头高度 就是scroll_view 的滚动高度 使用竖向滚动时,需要给<scroll-view/>一个固定高度,通过 WXSS 设置 height。 */
    wx.getSystemInfo({
            success: (res) => {
              let rs = res;//
              wx.createSelectorQuery()
                .selectAll('.tableHeader')
                .boundingClientRect((rects) => {
                  let rect = rects[0];
                  let height = rs.windowHeight - rect.height;//窗口高度-表头高度 
                  this.setData({
                    tbodyHeight: height.toFixed(0),
                  })
                }).exec();
            }
          });
  },
scrollHandler: function () {
    // 显示顶部刷新图标
    wx.showNavigationBarLoading();
    this.search();
  }
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值