当前位置: 首页 > 知识库问答 >
问题:

javascript - 微信小程序求助,表格表头第一行不固定?

潘振国
2023-07-16

自己仿照大佬的代码写的,顶部和左侧固定,右侧可以左右滑动,但是如果斜着拉动表格,表格会上下左右同时滚动,效果图如下:
表头固定

如果修改对应的代码,虽然斜着拉动表格不会同时滚动了,但是表头也无法固定了。。。纠结了好久,都快查秃了。。也没想到好的解决办法。效果图如下:

表头不固定
期望实现本图效果,然后表头可以固定, 还有一个问题,真机测试的时候,如果左右拉动,表头的名称单元格的内容“名称”会闪动。

希望大佬可以指出问题所在,萌新感激不尽。 初学编程,尝试写小程序,名词叫法可能有误,还请谅解~

代码如下:

wxml:

<ScrollView class="table" scroll-x scroll-y bindscrolltolower="handleScrollToLower">  <View class="sticky-box" style="height:{{tableHeight}}rpx;">    <View class="table__head" style="width:{{tableWidth}}rpx;">      <View class="table__head__td" wx:for="{{dataAttribute}}" wx:key="attrIndex" wx:for-index="attrIndex" wx:for-item="attrItem">        <Text          class="table__head__td__text"        >{{attrItem.title}}</Text>      </View>    </View>    <View class="table__row" wx:for="{{data}}" wx:key="dataIndex" wx:for-index="dataIndex" wx:for-item="dataItem" style="width:{{tableWidth}}rpx;">      <Text class="table__row__td" wx:for="{{dataAttribute}}" wx:key="dataIndex" wx:for-index="attrIndex" wx:for-item="attrItem">{{dataItem[attrItem.key] || '-'}}</Text>    </View>  </View></ScrollView>

JS代码如下:

const app = getApp();Page({  data: {    data: [      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      {        '3000X': '的大趋势(达瓦亲切)多少钱',        'onejg': 5000,        'twojg': 4000,        'zd': -50,        '30018': '元/吨',        '3003Y': '挂卖量200,以3830-3835全部成交'      },      // 其他数据...    ],    dataAttribute: [      {        title: '名称',        key: '3000X'      },      {        title: '今日价格',        key: 'onejg'      },      {        title: '昨日价格',        key: 'twojg'      },      {        title: '涨跌',        key: 'zd'      },      {        title: '单位',        key: '30018'      },      {        title: '备注',        key: '3003Y'      }    ],    tableHeight: (20 + 1) * 96,    tableWidth: 200 * 6 + 60  }});

WXSS代码如下:

page{  font-size: 26rpx;  line-height: 60rpx;  color: #222;  height: 100%;  width: 100%;}.table{  display: block;  position: relative;  overflow: scroll;  width: 100%;  height: 100%;}.sticky-box{}.table__head{  height: 96rpx;  white-space: nowrap;  position: sticky;  top: 0rpx;  z-index: 100;  height: 88rpx;  font-size: 24rpx;  line-height: 88rpx;  color: #aaabbd;  background-color: #f8f8f8;  border-bottom: 2rpx solid #ecf1f8;  background-color: #fff;  white-space: nowrap;  display: flex;}.table__head__td{  width: 200rpx;  display: flex;  justify-content: flex-start;  align-items: center;  background-color: #fff;  box-sizing: border-box;  position: relative;  overflow: hidden;  white-space: nowrap;  -o-text-overflow: ellipsis;  text-overflow: ellipsis;}.table__head__td:nth-child(1) {  padding-left: 24rpx;  width: 260rpx;  margin-right: 40rpx;  position: sticky;  z-index: 101;  left: 0rpx;}.table__head__td__text{  display: inline;}.table__row{  position: relative;  height: 96rpx;  white-space: nowrap;  display: flex;  justify-content: flex-start;  align-items: center;  border-bottom: 2rpx solid #ecf1f8;}.table__row__td{  overflow: scroll;  white-space: nowrap;  width: 200rpx;  display: inline-block;  background-color: #fff;  box-sizing: border-box;  font-size: 26rpx;  line-height: 96rpx;  position: relative;  overflow: hidden;  white-space: nowrap;  -o-text-overflow: ellipsis;  text-overflow: ellipsis;}.table__row__td:nth-child(1) {  margin-right: 40rpx;  padding-left: 24rpx;  width: 260rpx;  position: sticky;  z-index: 10;  left: 0;}

共有1个答案

邢臻
2023-07-16
<ScrollView class="table" scroll-x scroll-y bindscrolltolower="handleScrollToLower">  <View class="sticky-box" style="height:{{tableHeight}}rpx;">    <ScrollView scroll-x style="white-space: nowrap;">      <View class="table__head" style="width:{{tableWidth}}rpx;">        <View class="table__head__td" wx:for="{{dataAttribute}}" wx:key="attrIndex" wx:for-index="attrIndex" wx:for-item="attrItem">          <Text            class="table__head__td__text"          >{{attrItem.title}}</Text>        </View>      </View>    </ScrollView>    <ScrollView scroll-y style="overflow: scroll;">      <View class="table__row" wx:for="{{data}}" wx:key="dataIndex" wx:for-index="dataIndex" wx:for-item="dataItem" style="width:{{tableWidth}}rpx;">        <Text class="table__row__td" wx:for="{{dataAttribute}}" wx:key="dataIndex" wx:for-index="attrIndex" wx:for-item="attrItem">{{dataItem[attrItem.key] || '-'}}</Text>      </View>    </ScrollView>  </View></ScrollView>
.table {  width: 100%;  height: 100%;  overflow: hidden;}.sticky-box {  position: relative;}.table__head {  position: sticky;  top: 0;  display: flex;  justify-content: space-between;  align-items: center;  background-color: #fff;  border-bottom: 1px solid #e8e8e8;}.table__head__td {  flex: 1;  display: flex;  justify-content: center;  align-items: center;  height: 80rpx;  border-right: 1px solid #e8e8e8;}.table__head__td__text {  text-align: center;}.table__row {  display: flex;  justify-content: space-between;  align-items: center;  height: 80rpx;  border-bottom: 1px solid #e8e8e8;}.table__row__td {  flex: 1;  display: flex;  justify-content: center;  align-items: center;  border-right: 1px solid #e8e8e8;}
 类似资料:
  • 本文向大家介绍微信小程序实现简单表格,包括了微信小程序实现简单表格的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信小程序实现简单表格的具体代码,供大家参考,具体内容如下 效果图: wxml wxss js 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍微信小程序制作表格的方法,包括了微信小程序制作表格的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了微信小程序制作表格的具体代码。 微信小程序中没有专门的表格制作工具,不过使用列表渲染可以实现, 下面是我做的表格图片: 方法如下: 在XXX.wxml中填写下面的代码 在XXX.wxss中添加如下代码: 在XXX.js页面的pages定义下面的数据 以上就是本文的全部

  • 都知道微信小程序最多10个页面栈并提供了几个api reLaunch redirectTo 但是拼多多或者京东的商品详情页面里面点击“推荐商品”无限递归跳转商品详情页面,哪怕跳100层都没问题,然后点击左上角的返回,返回8层左右前面选的商品页面都没了,这种是怎么做到的呢,大佬们求救 我公司有个需求 首页-商品详情-(redirectTo确认-redirectTo支付-redirectTo支付结果)

  • 本文向大家介绍微信小程序 教程之列表渲染,包括了微信小程序 教程之列表渲染的使用技巧和注意事项,需要的朋友参考一下 系列文章: 微信小程序 教程之WXSS 微信小程序 教程之引用 微信小程序 教程之事件 微信小程序 教程之模板 微信小程序 教程之列表渲染 微信小程序 教程之条件渲染 微信小程序 教程之数据绑定 微信小程序 教程之WXML wx:for 在组件上使用wx:for控制属性绑定一个数组,

  • 我正在使用Ant设计表组件。问题是,它如何修复第一个表行?

  • @megalo/target 的 platform 设置成 wechat,mini-css-extract-plugin 提取文件后缀改成微信小程序的 wxss。 const createMegaloTarget = require( '@megalo/target' ) const compiler = require( '@megalo/template-compiler' ) const M