html - 你能强制绝对定位的表格单元格堆叠起来,就好像它们没有被从流中取出一样吗?

标签 html css html-table

我正在处理一个固定的第一列表格,因此当它水平滚动时,例如在移动设备中,第一列是固定的。

我在实现过程中遇到的问题是,当该固定列中单元格的内容超出一行文本时,文本会溢出到下一行单元格中。这是由于单元格在该固定列中的绝对定位。

我的实现(来自 https://codepen.io/gregor/pen/ApKxu ):

HTML

<div>
  <table class="sticky">
    <thead>
      <tr>
        <th class="headcol">RM</th>
        <th>Average</th>
        <th>Lombardi</th>
        <th>Brzycki</th>
        <th>Epley</th>
        <th>Mayhew</th>
        <th>O'Conner</th>
        <th>Wathan</th>
        <th>Lander</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="headcol">1RM</td>
        <td><strong>12</strong></td>
        <td>12</td>
        <td>12</td>
        <td>12</td>
        <td>12</td>
        <td>12</td>
        <td>12</td>
        <td>12</td>
      </tr>
      <tr>
        <td class="headcol">2RM</td>
        <td><strong>11</strong>
        </td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">3RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">4RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>11</td>
        <td>10</td>
        <td>11</td>
        <td>11</td>
        <td>10</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">5RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">6RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">7RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">8RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>9</td>
      </tr>
      <tr>
        <td class="headcol">9RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>9</td>
      </tr>
      <tr>
        <td class="headcol">10RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
      </tr>
    </tbody>
  </table>
</div>

CSS

div {
  overflow-x:scroll;  
  margin-left:2em;
    }
.headcol {
  position:absolute;
    width:2em;
    left:0;
    }

当我在其中一个固定列单元格中将“Foo Foo”添加到“1RM”时,问题就出现了,如下所示:

<td class="headcol">1RM Foo Foo</td>

结果: enter image description here

想法?

TIA

最佳答案

问题是您对绝对定位列有固定的 宽度。您可以增加宽度。

您可以对列使用 position: stickybackground-color

div {
  overflow-x:scroll;  
  margin-left:2em;
}
    
.headcol {
  position:sticky;
  left:0;
  background-color: white;
	width: auto;
}
<div>
  <table class="sticky">
    <thead>
      <tr>
        <th class="headcol">RM</th>
        <th>Average</th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Lombardi" target="_blank">Lombardi</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Brzycki" target="_blank">Brzycki</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Epley" target="_blank">Epley</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Mayhew_et_al." target="_blank">Mayhew</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#O.27Conner_et_al." target="_blank">O'Conner</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Wathan" target="_blank">Wathan</a>
        </th>
        <th><a href="http://en.wikipedia.org/wiki/One-repetition_maximum#Lander" target="_blank">Lander</a>
        </th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="headcol">1RM Foo Foo</td>
        <td style="font-size: 120%;"><strong>12</strong>
        </td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
        <td style="font-size: 120%;">12</td>
      </tr>
      <tr>
        <td class="headcol">2RM</td>
        <td><strong>11</strong>
        </td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">3RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">4RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>11</td>
        <td>10</td>
        <td>11</td>
        <td>11</td>
        <td>10</td>
        <td>11</td>
      </tr>
      <tr>
        <td class="headcol">5RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">6RM</td>
        <td><strong>10</strong>
        </td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">7RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>10</td>
      </tr>
      <tr>
        <td class="headcol">8RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>9</td>
      </tr>
      <tr>
        <td class="headcol">9RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>10</td>
        <td>10</td>
        <td>9</td>
        <td>9</td>
      </tr>
      <tr>
        <td class="headcol">10RM</td>
        <td><strong>9</strong>
        </td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
        <td>9</td>
      </tr>
    </tbody>

  </table>

</div>

关于html - 你能强制绝对定位的表格单元格堆叠起来,就好像它们没有被从流中取出一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58405715/

相关文章:

html - 有什么方法可以使用 wkhtmltopdf 减小文件大小?

html - 居中左对齐的表格

CSS 显示 : table-row-group, 将两个表格单元格组合在一起

javascript - 如何在表格中显示关联数组?

html - if else 的内联样式

javascript将多个数组转换为json

html - 在最小宽度无响应背景中居中 Logo

css - 我将如何进行旋转砌体布局,其中高度恒定且宽度可变

css - 如何使用 css 在文本周围创建边框

css3 transitions - 如何让一个div的高度从下往上增长