首页 > 其他分享 >给表格增加行间距的同时支持合并单元格,但不破坏 table 语义化标签结构的简单方法

给表格增加行间距的同时支持合并单元格,但不破坏 table 语义化标签结构的简单方法

时间:2022-11-02 21:01:15浏览次数:73  
标签:comment description 单元格 行间距 deadline 2022 Learn table Hello

背景

需要实现一个非典型的表格:表头下方,以及部分 tr 下方(将多个 tr 视作一个列表项,最后一个 tr 与下一个列表项之间)需要添加空白,但不能破坏 table、thead、tbody、th、tr 等语义化标签的结构——既不能拆分为多个表格,也不能添加 ul/li 标签。

直接给表格元素增加 margin 或者 border-spacing 都无效。此处参考了 excel 中合并单元格的方式,通过添加空白行并占满整行。

简单示例

<template>
  <table class="todo-list-table">
    <thead>
      <tr>
        <th>date</th>
        <th>description</th>
        <th>deadline</th>
        <th>comment</th>
        <th>action</th>
      </tr>
      <!-- separate row -->
      <tr class="separate-row">
        <td colspan="5"></td>
      </tr>
    </thead>
    <tbody>
      <!-- daily history -->
      <template v-for="({ date, todoList }, i) in todoHistoryList">
        <template v-for="({ description, deadline, comment }, j) in todoList">
          <tr class="order-list-table_row order-item_content" :key="i + '' + j">
            <!-- date; merged cell -->
            <template v-if="j === 0">
              <td :rowspan="todoList.length">{{ date }}</td>
            </template>
            <!-- todo info -->
            <td>{{ description }}</td>
            <td>{{ deadline }}</td>
            <td>{{ comment }}</td>
            <td><a>Delete</a></td>
          </tr>
          <!-- separate row -->
          <tr
            v-if="j === todoList.length - 1"
            :key="i + '' + j + 'separate'"
            class="separate-row"
          >
            <td colspan="5"></td>
          </tr>
        </template>
      </template>
    </tbody>
  </table>
</template>
<script>
export default {
  name: 'TodoListTable',
  data() {
    return {
      todoHistoryList: [
        {
          date: '2022-1-1',
          todoList: [
            {
              description: 'Learn CSS',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
            {
              description: 'Learn HTML',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
            {
              description: 'Learn JS',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
          ],
        },
        {
          date: '2022-1-1',
          todoList: [
            {
              description: 'Learn CSS',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
            {
              description: 'Learn HTML',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
            {
              description: 'Learn JS',
              deadline: '2022-1-1',
              comment: 'Hello',
            },
          ],
        },
      ],
    };
  },
};
</script>

效果展示

标签:comment,description,单元格,行间距,deadline,2022,Learn,table,Hello
From: https://www.cnblogs.com/cjc-0313/p/16852431.html

相关文章

  • 如何获得指定行、列中最后一个非空单元格,其实是踏破铁鞋无觅处
    Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!在上节已经讲述了range和cell......
  • iptables之SNAT与DNAT
    一、SNAT原理与应用1、SNAT应用环境局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由)2、SNAT原理修改数据包的源地址3、SNAT转换前提条件......
  • bootstart-table的使用和controller层传值
    整理一下使用过的bootstart-table,,首先当然导入js.css: <linktype="text/css"rel="stylesheet"href="js/bootstrap-table-develop/docs/assets/bootstrap/css/bootstrap.......
  • id,table列(1)—mysql执行计划(四十七)
    前面说了semi-join,这个是在where或者on语句后面,in里面,并且外层的条件必须用and与子查询连接,semi-join的作用就是,不管子查询有多少条数据返回,都不管,外层都只查询出来外层表数......
  • bootstrap table 和select不冲突导包
    <linktype="text/css"rel="stylesheet"href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"><scripttype="text/javascript"src="https://cdn.boo......
  • vue-handsontable常用配置项
    hotSettings:{data:this.objectData,//data:HandsontablePro.helper.createSpreadsheetData(100,50),//data:this.getDate(),......
  • 使用vue-handsontable实现web execl编辑
    npminstall--savevue-handsontable-official<template><divclass="wrap"><HotTable:root="test":settings="hotSettings"></HotTable></div></template><scri......
  • iptables 防火墙
    概述Linux系统自带的软件防火墙:iptables:Centos5/6系统默认防火墙firewalld:Centos7/8系统默认防火墙iptables概述iptables是Linux系统的防火墙,IP信息包过滤系......
  • vue element-ui table 实现自动滚动效果
    <el-table:data="tableData"stripeclass="swiper-page-table"ref="table"height="100%"><el-table-columntype="index"......
  • FlinkSql之TableAPI详解
    一、FlinkSql的概念核心概念Flink的TableAPI和SQL是流批统一的API。这意味着TableAPI&SQL在无论有限的批式输入还是无限的流式输入下,都具有相同的语义。......