The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.
caption-side
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Try it
caption-side: top;
caption-side: bottom;
<section class="default-example" id="default-example">
<table class="transition-all" id="example-element">
<caption>
Famous animals
</caption>
<tr>
<th>Name</th>
<th>Location</th>
</tr>
<tr>
<td>Giraffe</td>
<td>Africa</td>
</tr>
<tr>
<td>Penguin</td>
<td>Antarctica</td>
</tr>
<tr>
<td>Sloth</td>
<td>South America</td>
</tr>
<tr>
<td>Tiger</td>
<td>Asia</td>
</tr>
</table>
</section>
table {
font-size: 1.2rem;
text-align: left;
color: #000;
}
th,
td {
padding: 0.2rem 1rem;
}
caption {
background: #fc3;
padding: 0.5rem 1rem;
}
tr {
background: #eee;
}
tr:nth-child(even) {
background: #ccc;
}
Syntax
/* Directional values */ caption-side: top; caption-side: bottom; /* Global values */ caption-side: inherit; caption-side: initial; caption-side: revert; caption-side: revert-layer; caption-side: unset;
The caption-side property is specified as one of the keyword values listed below.
Values
top-
The caption box should be positioned at the block start side of the table.
bottom-
The caption box should be positioned at the block end side of the table.
Note: The CSS logical properties and values module defines two logical values, inline-start and inline-end, to position the caption box at the inline start edge and inline end edge of the table, respectively. These values are not supported in any browsers.
Formal definition
| Initial value | top |
|---|---|
| Applies to | table-caption elements |
| Inherited | yes |
| Computed value | as specified |
| Animation type | discrete |
Formal syntax
caption-side =
top |
bottom
Examples
Setting captions above and below
HTML
<table class="top">
<caption>
Caption ABOVE the table
</caption>
<tr>
<td>Some data</td>
<td>Some more data</td>
</tr>
</table>
<br />
<table class="bottom">
<caption>
Caption BELOW the table
</caption>
<tr>
<td>Some data</td>
<td>Some more data</td>
</tr>
</table>
CSS
.top caption {
caption-side: top;
}
.bottom caption {
caption-side: bottom;
}
table {
border: 1px solid red;
}
td {
border: 1px solid blue;
}
Result
Specifications
| Specification |
|---|
| Cascading Style Sheets Level 2 # propdef-caption-side |
| CSS Logical Properties and Values Level 1 # caption-side |
Browser compatibility
| Desktop | Mobile | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
caption-side |
1 | 12 | 1 | 4 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
bottom |
1 | 79 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
bottom-outside |
No | No | 1–87 | No | preview | No | 4–87 | No | No | No | No |
left |
No | No | 1–87 | No | 1–17 | No | 4–87 | No | 1–17 | No | No |
right |
No | No | 1–87 | No | 1–17 | No | 4–87 | No | 1–17 | No | No |
top |
1 | 79 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
top-outside |
No | No | 1–87 | No | preview | No | 4–87 | No | No | No | No |
writing-mode_relative_values |
No | No | 42 | No | No | No | 42 | No | No | No | No |
See also
<caption>- CSS table module
- CSS logical properties and values module
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side