制作不相同的表行(表内表内表)

Posted

技术标签:

【中文标题】制作不相同的表行(表内表内表)【英文标题】:Making non identical table rows (table within table within table) 【发布时间】:2019-09-15 23:23:46 【问题描述】:

我在创建与其上方不同的行时遇到问题。 我想要一行有 3 个单元格,然后在这一行下方延伸到行尾,依此类推。第一行 - 3 个单元格,第二行 - 1 个长单元格(长度等于上述三个单元格)并重复。

这是我使用的 html & CSS 模板

#table 
  margin: 0px;
  margin-left: 585px;
  margin-top: 50px;
  z-index: 2;
  width: 385;
  border-collapse: collapse;


.divStyle 
  /* in charge of the scroller*/
  width: 385px;
  height: 428px;
  overflow: auto;


.innerTables 
  width: 360;
  border-collapse: collapse;
  vertical-align: middle;


.productionTable tr td 
  width: 360px;
  border: 2px solid black;


.innerTables tr td,
th 
  margin: 0px;
  padding: 0px;
  width: 120px;


.innerTables tr td 
  border: 1px solid black;
<table id='table'>
  <tr>
    <td>
      <table class='innerTables'>
        <tr>
          <th>Building</th>
          <th>Amount</th>
          <th>1 Per</th>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td>
      <div class='divStyle'>
        <table class='innerTables'>
          <tr>
            <td>Fishery</td>
            <td class='inputText' id="fishery"></td>
            <td>800 Farmers</td>
          </tr>
          <tr>
            <td colspan="0">
              <table class='productionTable'>
                <tr>
                  test
                </tr>
              </table>
            </td>
          </tr>
        </table>
      </div>
    </td>
  </tr>
</table>

我尝试使用边框来指示它是否有效。

This is what I try to achieve

This is what I achieve

【问题讨论】:

你不能只使用 colspan 吗? 想要得到什么并不容易理解。也许您可以详细说明或添加图片。 已编辑,但以下答案有所帮助,谢谢 【参考方案1】:

使用 colspan 扩大列的宽度

我为你做了一个小提琴https://jsfiddle.net/vzy97s2a/

                    <tr>
                      <td colspan="3">
                        wider
                      </td>
                    </tr>

【讨论】:

【参考方案2】:

我会说使用colspan="3" 作为其他答案,但是如果您希望它是动态的并且您不想将colspan 添加到每个表格单元格中,您可以尝试使用这种方法

.row
    display: flex;


.column
    border: 1px solid red;


.table> .row:nth-child(odd) > .column
    width: 33.3%;
    flex-grow: 1;


.table> .row:nth-child(even) > .column
    width: 100%;
<div class="table">
    <div class="row">
        <div class="column">test</div>
        <div class="column">test</div>
        <div class="column">test</div>
    </div>
    <div class="row">
        <div class="column">test</div>
    </div>
    <div class="row">
        <div class="column">test</div>
        <div class="column">test</div>
        <div class="column">test</div>
    </div>
    <div class="row">
        <div class="column">test</div>
    </div>
</div>

【讨论】:

【参考方案3】:

最好的方法是 colspan 或 rowspan。在那里阅读更多 https://www.w3schools.com/tags/att_td_rowspan.asp

<tr>
 <td colspan="3">
  <table class='productionTable'>

【讨论】:

【参考方案4】:

你可以使用 colspan 属性代替

<table id='table'>
    <tr>
        <td>
            <table class='innerTables'>
                <tr>
                    <th>Building</th>
                    <th>Amount</th>
                    <th>1 Per</th>
                </tr>
                <tr>
                    <td>Fishery</td>
                    <td class='inputText' id="fishery"></td>
                    <td>800 Farmers</td>
                </tr>
                <tr>
                  <td colspan="3">
                    Test
                  </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

【讨论】:

以上是关于制作不相同的表行(表内表内表)的主要内容,如果未能解决你的问题,请参考以下文章

abap中 内表的问题

将瀚高数据库表内数据导出Excel格式

详解ABAP/4内表结构

ABAP 中内表的复制

abap怎么把一个内表A的全部数据赋值到另外一个内表B

想筛选出excel表格A表与B表内姓名与身份证号码相同的数据,那个啥函数不会用