html - 请解释奇怪的 HTML 表格 rowspan 行为

标签 html html-table

考虑以下 HTML 表格定义。

<table>
 <tbody>
  <tr>
   <td rowspan='2'>A</td>
   <td>2</td>
   <td rowspan='2'>B</td>
  </tr>
  <tr>
   <td rowspan='2'>C</td>
  </tr>
  <tr>
   <td>1</td>
   <td>3</td>
  </tr>
 </tbody>
</table>

我希望表格看起来像:

+---+---+---+
| A | 2 | B |
|   +---+   |
|   | C |   |
+---+   +---+
| 1 |   | 3 |
+---+---+---+

但在 Firefox、IE8 和 Chrome 中,表格呈现如下:

+---+---+---+
| A | 2 | B |
+---+---+---+
| 1 | C | 3 |
+---+---+---+

如果我向表中添加另一列,如下所示:

<table>
 <tbody>
  <tr>
   <td>a</td>
   <td rowspan='2'>A</td>
   <td>2</td>
   <td rowspan='2'>B</td>
  </tr>
  <tr>
   <td>b</td>
   <td rowspan='2'>C</td>
  </tr>
  <tr>
   <td>c</td>
   <td>1</td>
   <td>3</td>
  </tr>
 </tbody>
</table>

...我得到以下内容,这更像是我想要的。

+---+---+---+---+
| a | A | 2 | B |
+---+   +---+   |
| b |   | C |   |
+---+---+   +---+
| c | 1 |   | 3 |
+---+---+---+---+

问题:

  1. 浏览器的行为是否正确?如果是这样,为什么在上面给出的第一个 HTML 段的情况下表格会非直观地折叠?

  2. 是否有任何有效的 HTML/css 可以强制表格按我的预期显示?

最佳答案

我认为这确实有效... 您的单元格高度不固定,所以它似乎不起作用。但是如果你这样尝试:

<table border="1">
<tr>
    <td height="50px" rowspan="2">A</td>
    <td>2</td>
    <td rowspan="2">B</td>
</tr>
<tr>
    <td rowspan="2">C</td>
</tr>
<tr>
    <td>1</td>>
    <td>3</td>
</tr>
</table>

您会看到表格的行为如您所愿:

Table Result with border
(来源:myimg.de)

所以如果你想让你的表格看起来像你解释的那样,我认为你需要做的就是在 css 中定义单元格高度或像我上面描述的那样。

关于html - 请解释奇怪的 HTML 表格 rowspan 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172626/

相关文章:

html - 如何让嵌套表与父表重叠

html - 关闭空标签 : XHTML5 or HTML5? 为什么一个在另一个之上?

javascript - 防止元素淡入淡出时出现跳跃

css - 折叠特定 td 类的边框

html - 修改 HTML 表格的单元格

javascript - HTML 表格列未正确显示

jquery - 如何使用 jQuery 查找 HTML 表格的列号

html - <li> 中哪些子元素有效?

JavaScript IF 语句 boolean 严格

javascript - 使用 html5 验证电子邮件