Vertical and Horizontal Headers in a table?
Asked Answered
P

4

18

How would I get a table with both horizontal and vertical headers?

So e.g.

         header1 header2 header3 
header1    1        1      1
header2    2        2      2 
header3    3        3      3 
Peddada answered 8/9, 2011 at 21:44 Comment(0)
F
34

Like @UlrichSchwarz said, you can just use <th> instead of <td> in the first column. Using scope, you can make it more semantically descriptive:

<table>
  <tr>
    <th></th>
    <th scope="col">header1</th>
    <th scope="col">header2</th>
    <th scope="col">header3</th>
  </tr>
  <tr>
    <th scope="row">header 1</th>
    <td>1</td>
    <td>1</td>
    <td>1</td>
  </tr>
  <tr>
    <th scope="row">header 2</th>
    <td>2</td>
    <td>2</td>
    <td>2</td>
  </tr>
  <tr>
    <th scope="row">header 3</th>
    <td>3</td>
    <td>3</td>
    <td>3</td>
  </tr>
</table>
Feeley answered 25/10, 2013 at 14:20 Comment(0)
P
6

While you can still just <th> the entries in the first column, there is no column-equivalent of <thead>/<tbody> that I'm aware of.

Percussionist answered 11/9, 2011 at 15:48 Comment(0)
M
0

easy. Just leave the first td in the first tr - empty

Mauretania answered 8/9, 2011 at 22:3 Comment(0)
N
-2

You can make it with quite elementary HTML and CSS classes:

table{border-collapse:collapse}
td{text-align:center;padding:5px;border:1px solid #000}
td.empty{border:0}
td.headt{font-weight:bold;background-color:#b7f926}
<table>
<tr>
<td class="empty"> </td>
<td class="headt">Header 1</td>
<td class="headt">Header 2</td>
<td class="headt">Header 3</td>
</tr>
<tr>
<td class="headt">Header 1</td><td>1</td><td>2</td><td>3</td>
</tr>
<tr>
<td class="headt">Header 2</td><td>1</td><td>2</td><td>3</td>
</tr>
<tr>
<td class="headt">Header 3</td><td>1</td><td>2</td><td>3</td>
</tr>
</table>

This is just a sketch/suggestion, but hopefully useful to compare for future readers :)

Neologize answered 26/2, 2021 at 20:25 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.