html - 使用 CSS 重新排列 html 表格

标签 html css html-table

我有一个这样的 html 表格,但是有几个这样的 tbody 元素。

<table>
 <tbody>
  <tr>
   <td>Header 1</td>
   <td>Header 2</td>
  </tr>
  <tr>
   <td>Content 1</td>
   <td>Content 2</td>
  </tr>
 </tbody>
</table>

有没有什么办法可以用 CSS 改变这个表格的外观,让它看起来像这样排列的表格:

<table>
 <tbody>
  <tr>
   <td>Header 1</td>
  <tr/>
  <tr>
   <td>Content 1</td>
  </tr>
  <tr>
   <td>Header 2</td>
  </tr>
  <tr>
   <td>Content 2</td>
  <tr/>
 </tbody>
</table>

最佳答案

实现此目的的一种方法是使用具有 data 属性的伪元素。

伪元素的 content 属性将调用 data 属性,该属性将包含与该列标题相同的文本。

只需隐藏表头并使用媒体查询(或在您想要的任何其他情况下)显示伪元素。

table {
  width: 500px;
  border-collapse: collapse;
}
td {
  border: 1px solid gray;
}
@media all and (max-width: 600px) {
  tr:nth-child(1) {
    display: none;
  }
  tr {
    display: block;
    width: 100%;
  }
  tr td {
    display: block;
    width: 100%;
  }
  tr td::before {
    content: attr(data-header);
    display: block;
  }
}
<table>
  <tbody>
    <tr>
      <td>Header 1</td>
      <td>Header 2</td>
    </tr>
    <tr>
      <td data-header="Header 1">Content 1</td>
      <td data-header="Header 2">Content 2</td>
    </tr>
  </tbody>
</table>

<p style="margin-left: 210px">&larr; resize &rarr;</p>

关于html - 使用 CSS 重新排列 html 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45602168/

相关文章:

javascript - JSON:无法读取未定义的属性 '0'

html - anchor 在 Chrome 中不起作用,但在 Mozilla 中起作用

javascript - 以 blob 作为源播放音频时出现 DOMException

html - 带滚动的响应式全屏图像

javascript - 如何使用 jQuery 获取用户选择的文件类型?

html - flexbox 中的图像无法正确缩放

php - 如何将具有 30 个元素的 ul 分隔为 3 行?

html - 表格中的样式 <th> 在 IE 中不起作用

javascript - 多个倒计时器

css - &lt;!--[if IE]> 如何工作而不工作?