You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现酒桶存储位置的折叠式交互式表格展示技术问询

实现酒桶存储位置的折叠式交互式表格展示技术问询

Great question! 这种折叠展开的交互式表格完全可以实现,而且不需要复杂的框架,用基础的HTML+CSS+JavaScript就能搞定,甚至可以结合Markdown的扩展特性(如果你的渲染环境支持的话)。下面我给你详细说几种可行的方案:

方案一:利用HTML原生<details>/<summary>标签(最简洁)

这是最省心的方式,因为<details>是HTML原生的折叠控件,不需要额外JS就能实现展开/收起,而且大部分现代Markdown渲染器都支持嵌入HTML标签。

你可以把每个存储位(Rick)做成一个<details>块,里面包含该Rick对应的3层酒桶行。示例结构大概是这样:

<table>
  <thead>
    <tr>
      <th>Rick #</th>
      <th>1</th><th>2</th><th>3</th><th>4</th><th>5</th>
      <th>6</th><th>7</th><th>8</th><th>9</th><th>10</th>
    </tr>
  </thead>
  <tbody>
    <!-- Rick 1 -->
    <tr>
      <td>
        <details>
          <summary>1 (点击展开)</summary>
          <table>
            <tr>
              <td>1-3</td>
              <td>2201</td><td>2202</td><td>11</td><td>2204</td><td>2205</td>
              <td>2206</td><td>2207</td><td>2208</td><td>2209</td><td>2210</td>
            </tr>
            <tr>
              <td>1-2</td>
              <td>3107</td><td>3108</td><td>3109</td><td>3110</td><td>3111</td>
              <td>3112</td><td>3113</td><td>3114</td><td>3115</td><td>3116</td>
            </tr>
            <tr>
              <td>1-1</td>
              <td>...</td><td>...</td><td>...</td><td>...</td><td>...</td>
              <td>...</td><td>...</td><td>...</td><td>...</td><td>...</td>
            </tr>
          </table>
        </details>
      </td>
      <td colspan="10"></td>
    </tr>
    <!-- Rick 2 -->
    <tr>
      <td>
        <details>
          <summary>2 (点击展开)</summary>
          <!-- 同样的3层结构 -->
        </details>
      </td>
      <td colspan="10"></td>
    </tr>
  </tbody>
</table>

这种方式的好处是:

  • 原生控件,兼容性好,不需要写JS
  • 折叠/展开的状态会自动保存(部分浏览器支持)
  • 完全可以嵌入到Markdown文档中,只要你的渲染器允许HTML

方案二:纯JS控制的表格行展开(更灵活)

如果想要更定制化的样式(比如展开时的动画效果,或者自定义按钮样式),可以用简单的JavaScript来控制行的显示/隐藏。

示例思路:

  1. 给每个Rick的标题行加一个自定义按钮
  2. 把该Rick对应的3层行设置为默认隐藏(用CSS的display: none)
  3. 给按钮绑定点击事件,切换对应行的显示状态

代码示例:

<style>
  .rick-rows { display: none; }
  .expand-btn { padding: 4px 8px; cursor: pointer; }
</style>

<table>
  <thead>
    <tr>
      <th>Rick #</th>
      <th>1</th><th>2</th><th>3</th><th>4</th><th>5</th>
      <th>6</th><th>7</th><th>8</th><th>9</th><th>10</th>
    </tr>
  </thead>
  <tbody>
    <!-- Rick 1 -->
    <tr>
      <td><button class="expand-btn" onclick="toggleRows('rick1')">1 EXPAND</button></td>
      <td colspan="10"></td>
    </tr>
    <tr class="rick-rows" id="rick1">
      <td>1-3</td>
      <td>2201</td><td>2202</td><td>11</td><td>2204</td><td>2205</td>
      <td>2206</td><td>2207</td><td>2208</td><td>2209</td><td>2210</td>
    </tr>
    <tr class="rick-rows" id="rick1">
      <td>1-2</td>
      <td>3107</td><td>3108</td><td>3109</td><td>3110</td><td>3111</td>
      <td>3112</td><td>3113</td><td>3114</td><td>3115</td><td>3116</td>
    </tr>
    <tr class="rick-rows" id="rick1">
      <td>1-1</td>
      <td>...</td><td>...</td><td>...</td><td>...</td><td>...</td>
      <td>...</td><td>...</td><td>...</td><td>...</td><td>...</td>
    </tr>
  </tbody>
</table>

<script>
function toggleRows(rickId) {
  const rows = document.querySelectorAll(`#${rickId}`);
  rows.forEach(row => {
    row.style.display = row.style.display === 'table-row' ? 'none' : 'table-row';
  });
}
</script>

这个方案的优势是可以完全自定义样式和交互逻辑,比如给展开按钮加图标,或者展开时添加过渡动画。

注意事项

  • 如果是在纯Markdown环境(比如GitHub README)中,第一种方案的<details>标签是完全支持的,第二种方案的JS可能会被禁用,所以优先选第一种
  • 不管哪种方案,都要确保表格的结构对齐,避免出现排版错乱的情况
  • 可以给每个酒桶单元格加上hover效果,方便查看细节

这样应该就能完美解决你的需求啦!

备注:内容来源于stack exchange,提问作者Harry Jarvis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:40:31