在表格中,使用`frame`和`grid`块属性来控制边框。您可以结合这两个属性,为您的表格实现多种边框样式。

框架

表格周围的边框通过表格上的 frame 属性进行控制。frame 属性默认值为 all(暗示值),它在表格的每一边绘制边框。这个默认值可以通过设置文档属性 table-frame 来改变。您可以通过将表格上的 frame 属性设置为 allendssidesnone 来覆盖默认值。

ends` 值在表格的顶部和底部绘制边框。

带有框架=两端的表格
[frame=ends]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

sides` 值会在表格的右侧和左侧绘制边框。

带有侧边框架的表格
[frame=sides]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

none`值会移除表格周围的边框。

无边框的表格
[frame=none]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

格网

在表格中,单元格之间的边界通过表格上的 grid 属性来控制。grid 属性默认的值是 all(暗示的值),它会在所有单元格之间画上边界。这个默认值可以通过设置文档属性 table-grid 来改变。你可以通过将表格上的 grid 属性设置为 allrowscolsnone 来覆盖默认值。

rows` 值在表格的行之间绘制边框。

带有网格=行的表格
[grid=rows]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

cols` 值用于在列之间绘制边框。

带有网格列的表格
[grid=cols]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

none` 值会移除单元格之间的所有边框。

不带网格的表格
[grid=none]
Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

Unresolved directive in borders.adoc - include::example$row.adoc[tag=base-h]

与行和列跨度的互动

使用行和列跨度可能会干扰表格边框的放置。这是使用CSS样式HTML的一个限制。

当一个单元格扩展到其他行或列时,该单元格在它扩展到的行或列的HTML中并不会被表示。如果单元格达到了表格的边界,这将会成为一个问题。CSS选择器只匹配单元格开始的位置,因此无法检测它是否触及了表格的边界。因此,它不能像对待1x1单元格(即,被限制在单一行和列中的单元格)那样添加或移除边界。

由于行和列跨度的干扰,并不总是会影响边界的放置。当表格有跨行或跨列延伸到表格边界时,只要框架和网格一致,边界总是会正确工作。在这个上下文中,一致意味着框架和网格都在为相同的边缘贡献边界。

这些是框架和网格一致的场景:

  • 边框=全部, 网格=全部

  • 框架=全部, 网格=无

  • 框架=全部,网格=行

  • 框架=全部,网格=列

  • frame=框架边界, grid=网格行

  • 边框=侧边,网格=列

  • 框架=无,网格=无

如果你在表格中使用行和列跨度,强烈建议你使用这些框架和网格组合之一。