css 最常见的方法写一个HTML表格与垂直标题?

qoefvg9y  于 2023-03-05  发布在  其他
关注(0)|答案(4)|浏览(145)

大家好,我已经有一段时间没有问过什么问题了,这件事已经困扰我一段时间了,问题本身就在标题中:
你喜欢用什么方法来编写有垂直标题的HTML表格?
我所说的垂直标题是指表的标题(<th>)标记位于左侧(通常)

表头1数据数据数据
表头2数据数据数据
表头3数据数据数据

他们看起来像这样,到目前为止我有两个选择

第一个选项

<table id="vertical-1">
    <caption>First Way</caption>
    <tr>
        <th>Header 1</th>
        <td>data</td><td>data</td><td>data</td>
    </tr>
    <tr>
        <th>Header 2</th>
        <td>data</td><td>data</td><td>data</td>
    </tr>
    <tr>
        <th>Header 2</th>
        <td>data</td><td>data</td><td>data</td>
    </tr>
</table>

这种方式的主要优点是,您可以在它所表示的数据旁边(实际上是左边)放置标题,但我不喜欢的是,缺少<thead><tbody><tfoot>标记,并且无法在不破坏正确放置在一起的元素的情况下包含它们,这导致了我的第二种选择。

第二个选项

<style type="text/css">
    #vertical-2 thead,#vertical-2 tbody{
        display:inline-block;
    }
</style>
<table id="vertical-2">
    <caption>Second Way</caption>
    <thead>
        <tr>
            <th colspan="3">Header 1</th>
        </tr>
        <tr>
            <th colspan="3">Header 2</th>
        </tr>
        <tr>
            <th colspan="3">Header 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>row 1</td>
            <td>row 1</td>
            <td>row 1</td>
        </tr>
        <tr>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
        <tr>
            <td>data</td>
            <td>data</td>
            <td>data</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td colspan="4">Footer</td>
        </tr>
    </tfoot>
</table>

这里的主要优点是你有一个完全描述性的html表,缺点是正确的表示需要一点CSS的tbodythead标签,而且标题和数据之间的关系不是很清楚,因为我有我的怀疑时,创建标记。
因此,这两种方法都能按照它应该的方式呈现表格,这里是一个陷阱:

如果你喜欢的话,可以把标题放在左边或右边,那么,有什么建议、替代方案、浏览器问题吗?

w6lpcovy

w6lpcovy1#

首先,第二个选项不是有效的HTML,因为表中的所有行(TR)都应该包含相同数量的列(TD)。表头为1,正文为3。应该使用colspan属性来解决这个问题。

参考:“THEAD、TFOOT和TBODY部分必须包含相同数量的列。”-第11.2.3节的最后一段。
**话虽如此,**在我看来,第一个选项是更好的方法,因为无论我是否启用CSS,它都是可读的。一些浏览器(或搜索引擎爬虫)不使用CSS,因此,它会使您的数据毫无意义,因为标题将表示列而不是行。

jgzswidk

jgzswidk2#

第一个选择...我认为这是更好和简单的方法...

jaql4c8m

jaql4c8m3#

老实说,选择1。我建议你看看这个例子从W3.org(链接如下)。我认为这种方法是最好的,因为这样你的标题也将解释正确的屏幕阅读器。
https://www.w3.org/WAI/tutorials/tables/one-header/#table-with-header-cells-in-the-first-column-only

9njqaruj

9njqaruj4#

div.vertical {
  margin-left: -85px;
  position: absolute;
  width: 215px;
  transform: rotate(-90deg);
  -webkit-transform: rotate(-90deg);
  /* Safari/Chrome */
  -moz-transform: rotate(-90deg);
  /* Firefox */
  -o-transform: rotate(-90deg);
  /* Opera */
  -ms-transform: rotate(-90deg);
  /* IE 9 */
}

th.vertical {
  height: 220px;
  line-height: 14px;
  padding-bottom: 20px;
  text-align: left;
}
<table>
  <thead>
    <tr>
      <th class="vertical">
        <div class="vertical">Really long and complex title 1</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 2</div>
      </th>
      <th class="vertical">
        <div class="vertical">Really long and complex title 3</div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Example</td>
      <td>a, b, c</td>
      <td>1, 2, 3</td>
    </tr>
  </tbody>
</table>

相关问题