在thead中的两行,不能将列宽设置为秒

时间:2018-02-09 22:43:31

标签: html-table column-width

我有一排有两排标题的桌子。我想设置第二行中一些列的宽度。我设置了Codepen来测试它。我发现,如果我删除第一行标题,我会指定列宽没有问题。但是对于第一行标题,它会忽略第二行中列的宽度。 :(

请注意我div内有th个,所以我可以设置边框样式。

这是HTML:

<table class="data-table">
    <thead>
        <tr>
            <th class="title-11"></th>
            <th colSpan="2" class="title title-12">
        <div class="div-title">Source</div>
      </th>
            <th colSpan="2" class="title title-13">
        <div class="div-title">Destination</div>
      </th>
        </tr>
        <tr>
            <th class="title-21"></th>
            <th colSpan="1" class="fieldname title title-22">
        <div class="div-title hdr-field">Field</div>
      </th>
            <th colSpan="1" class="title title-23">
        <div class="div-title">Value</div>
      </th>
            <th colSpan="1" class="fieldname title title-24">
        <div class="div-title hdr-field">Field</div>
      </th>
            <th colSpan="1" class="title title-25">
              <div class="div-title">Value</div>
            </th>
        </tr>
    </thead>
    <tbody class="bodySection">
        <tr>
            <td rowSpan="2" class="side-title">Name</td>
            <td class="fieldname src-data">Short Name</td>
            <td class="fieldvalue src-data"My Store/td>
            <td class="fieldname dest-data">Short Name</td>
            <td class="fieldvalue dest-data"><input type="text" value="My Store" /></td>
        </tr>
        <tr>
            <td class="fieldname src-data">Long Name</td>
            <td class="fieldvalue src-data"My Store/td>
            <td class="fieldname dest-data">Long Name</td>
            <td class="fieldvalue dest-data"><input type="text" value="My Store" /></td>
        </tr>
    </tbody>
    <tbody class="bodySection">
        <tr>
            <td rowSpan="2" class="side-title">Name2</td>
            <td class="fieldname src-data">Short Name2</td>
            <td class="fieldvalue src-data"My Store/td>
            <td class="fieldname dest-data">Short Name2</td>
            <td class="fieldvalue dest-data"><input type="text" value="My Store2" /></td>
        </tr>
        <tr>
            <td class="fieldname src-data">Long Name2</td>
            <td class="fieldvalue src-data"My Store/td>
            <td class="fieldname dest-data">Long Name2</td>
            <td class="fieldvalue dest-data"><input type="text" value="My Store2" /></td>
        </tr>
    </tbody>
</table>

这就是CSS:

body {
  padding: 10px;
}

.data-table {
  width: 100%;
  border-spacing: 0 4px;
  border-collapse: separate;
  table-layout: fixed;

  .title-11, .title-21 {
    width: 40px;
  }
  .title-22 {
    width: 100px;
  }
  .title-24 {
    width: 100px;
  }

  thead tr th {
    border-collapse: separate; 
    border-spacing: 0 5px;
  }
   .title {
     /*
     background: linear-gradient(to right, transparent 0%, #bbb 0%,
       #bbb calc(100% - 10px), 
       transparent calc(100% - 10px)) 0 99% / 100% 1px 
       no-repeat; 
     */
     text-align: left; 
     padding-right: 10px;
  }

  .div-title {
    border-bottom: 1px solid #bbb;
  }
  .hdr-field {
    width: 150px;
  }
  tr .title:last-child {
    padding-right: 0;
  }
  .side-title {
    transform: rotate(-90deg);
    width: 25px;
  }
  .fieldname {
    width: 130px;
  }
  .fieldvalue.dest-data input[type=text] {
    width: 100%;
  }
  .bodySection {
    border-bottom: 10px solid #bbb;
    margin-bottom: 10px;
  }
  tr {
    // border-bottom: 10px solid #bbb;
  }
}

所以只是为了澄清:问题是如何使Field列固定宽度,同时让Value列找到自己的级别。

谢谢。

1 个答案:

答案 0 :(得分:1)

我无法理解为什么如何计算表的布局,因为the algorythm seems pretty complex

然而,你可以通过使用一个好的ol&#39;来实现理想的布局。 <colgroup>。 有一些关于如何在HTML4 spec | Calculating column width中使用它们的信息并不太难以消化。请注意,这也适用于新规范(col和colgroup不被弃用)。

在你的小提琴中<table><thead>之间加上:

<colgroup>
  <col></col>
  <col width="150"></col>
  <col></col>
  <col width="150"></col>
  <col></col>
</colgroup>