【微信小程序遇到的坑】实现跨行跨列的表格

本文介绍如何在微信小程序中自定义实现一个带有跨行跨列功能的复杂表格。通过提供的WXML和WXSS代码示例,展示了如何布局表格结构并实现特定样式的表格单元格。

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

由于微信小程序组件中不带table标签,所以只能自己制作一个table表格,并且是实现跨行跨列的复杂表格。

直接上代码,即可预览效果

wxml

<view class="table">
  <view class="tr tr_title">
    上午8:30-11:45
  </view>
  <view class="tr bg-w">
    <view class="th width1">板块</view>
    <view class="th width2">时间</view>
    <view class="th width2">环节</view>
    <view class="th width1">时长</view>
  </view>
  <view class='tr'>
    <view class="td  td_center">开场</view>
    <view class="td width2">
      <view class="tdd2">签到/暖场(展示区开放)</view>
      <view class="tdd2 border-none">签到/暖场(展示区开放)</view>
    </view>
    <view class="td width2">
      <view class="tdd2">签到/暖场(展示区开放)</view>
      <view class="tdd2 border-none">签到/暖场(展示区开放)</view>
    </view>
    <view class="td width1 td_center">60分钟</view>
  </view>
  <block wx:for="{{6}}" wx:key="">
    <view class="tr">
      <view class="td">业绩展示</view>
      <view class="td width2">09:30-09:35</view>
      <view class="td width2">主持人开场</view>
      <view class="td">5分钟</view>
    </view>
  </block>
</view>

wxss

.table {
   border-bottom: 1rpx solid #555; 
  position: absolute;
  top: 50rpx;
  left: 0;
  right: 0;
  margin: auto;
  width: 96%;
  font-size: 14px;
}

.tr {
  display: flex;
  width: 100%;
  border-top: 1rpx solid #555;
  border-left: 1rpx solid #555;
  color: #555;
  box-sizing: border-box;
}
.tr_title{
  display:block;
  text-align:center;
  padding:20rpx 0;
  border-right: 1px solid #333;
}
.td {
  width: 20%;
  justify-content: center;
  text-align: center;
  border-right: 1rpx solid #555;
  padding: 20rpx 0;
}

.th {
  justify-content: center;
  display: flex;
  height: 3rem;
  align-items: center;
  color: #555;
  border-right: 1rpx solid #555;
}

.td_center {
  display: flex;
  align-items: center;
}

.tdd2 {
  border-bottom: 1px solid #333;
  padding: 4px;
}

.width1 {
  width: 20%;
}

.width2 {
  width: 30%;
}

.bg-g {
  background: #e6f3f9;
}

.border-none {
  border: none;
}


### 微信小程序实现跨行表格微信小程序里,由于原生组件并不直接支持HTML `<table>`标签及其属性,因此要创建具有复杂布局(如跨行)的表格,通常采用`<view>`和其他自定义样式来模拟表格效果[^1]。 对于希望构建带有跨行特性的表格而言,开发者可以利用CSS Grid或者Flexbox来进行布局设计。下面是一个简单的例子展示如何使用这些技术制作一个具备两三行结构,并且其中某些单元格能够越多行显示的内容: ```html <!-- wxml --> <view class="container"> <!-- 表头部分 --> <view class="row header-row"> <view class="cell">Header A</view> <view class="cell">Header B</view> </view> <!-- 数据行 --> <view class="row data-row"> <view class="cell row-span-2">Data spanning two rows</view> <!-- 这个单元格会横两个数据行 --> <view class="cell">Row 1 Col 2</view> </view> <view class="row data-row"> <view class="cell hidden"></view> <!-- 隐藏此单元格以允许上面的数据项扩展 --> <view class="cell">Row 2 Col 2</view> </view> </view> ``` ```css /* wxss */ .container { display: grid; gap: 0px; /* 设置网格间距 */ } .row { display: contents; /* 让子元素作为grid item */ } .cell { border: solid 1px black; padding: 8px; } .header-row .cell, .data-row:nth-child(odd) .cell{ background-color: lightgray; } .hidden { visibility: collapse !important ; /* 使用visibility隐藏而不是display:none,以便保持空间分配给其他元素*/ } .row-span-2 { grid-row-end: span 2; /* 定义该单元格占据多少行 */ } ``` 上述代码片段展示了怎样通过调整`.hidden`类以及设置特定于某一行或某一组行的选择器规则,使得指定区域内的内容可以在视觉上看起来像是越了多个逻辑上的“行”。 值得注意的是,在实际开发过程中可能还需要考虑更多细节问题,比如响应式设计、性能优化等方面的要求;此外也可以探索第三方库提供的解决方案,它们往往提供了更丰富的API和支持特性,有助于简化复杂的UI构建过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值