The vertical-align
CSS property specifies the vertical alignment of an inline or table-cell box.
/* keyword values */ vertical-align: baseline; vertical-align: sub; vertical-align: super; vertical-align: text-top; vertical-align: text-bottom; vertical-align: middle; vertical-align: top; vertical-align: bottom; /* <length> values */ vertical-align: 10em; vertical-align: 4px; /* <percentage> values */ vertical-align: 20%; /* Global values */ vertical-align: inherit; vertical-align: initial; vertical-align: unset;
The vertical-align property can be used in two contexts:
- to vertically align an inline element's box inside its containing line box. For example, it could be used to vertically align an
<img>
in a line of text:
<p> top:<img style="vertical-align:top" src="https://mdn.mozillademos.org/files/15189/star.png"/> middle:<img style="vertical-align:middle" src="https://mdn.mozillademos.org/files/15189/star.png"/> bottom:<img style="vertical-align:bottom" src="https://mdn.mozillademos.org/files/15189/star.png"/> super:<img style="vertical-align:super" src="https://mdn.mozillademos.org/files/15189/star.png"/> sub:<img style="vertical-align:sub" src="https://mdn.mozillademos.org/files/15189/star.png"/> </p> <p> text-top:<img style="vertical-align:text-top" src="https://mdn.mozillademos.org/files/15189/star.png"/> text-bottom:<img style="vertical-align:text-bottom" src="https://mdn.mozillademos.org/files/15189/star.png"/> 0.2em:<img style="vertical-align:0.2em" src="https://mdn.mozillademos.org/files/15189/star.png"/> -1em:<img style="vertical-align:-1em" src="https://mdn.mozillademos.org/files/15189/star.png"/> 20%:<img style="vertical-align:20%" src="https://mdn.mozillademos.org/files/15189/star.png"/> -100%:<img style="vertical-align:-100%" src="https://mdn.mozillademos.org/files/15189/star.png"/> </p>
#* { box-sizing: border-box; } img { margin-right: 0.5em; } p { height: 3em; padding: 0 .5em; font-family: monospace; text-decoration: underline overline; margin-left: auto; margin-right: auto; width: 80%; }
- to vertically align the content of a cell in a table:
<table> <tr> <td style="vertical-align: baseline">baseline</td> <td style="vertical-align: top">top</td> <td style="vertical-align: middle">middle</td> <td style="vertical-align: bottom">bottom</td> <td> <p>There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable.</p> <p>There is another theory which states that this has already happened.</p> </td> </tr> </table>
table { margin-left: auto; margin-right: auto; width: 80%; } table, th, td { border: 1px solid black; } td { padding: 0.5em; font-family: monospace; }
Note that vertical-align
only applies to inline and table-cell elements: you can't use it to vertically align block level elements.
Initial value | baseline |
---|---|
Applies to | inline-level and table-cell elements. It also applies to ::first-letter and ::first-line . |
Inherited | no |
Percentages | refer to the line-height of the element itself |
Media | visual |
Computed value | for percentage and length values, the absolute length, otherwise the keyword as specified |
Animation type | a length |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Syntax
This property is specified as one of the keyword values listed below.
Values (for inline elements)
Most of the values vertically align the element relative to its parent element:
baseline
- Aligns the baseline of the element with the baseline of its parent. The baseline of some replaced elements, like
<textarea>
, is not specified by the HTML specification, meaning that their behavior with this keyword may change from one browser to the other. sub
- Aligns the baseline of the element with the subscript-baseline of its parent.
super
- Aligns the baseline of the element with the superscript-baseline of its parent.
text-top
- Aligns the top of the element with the top of the parent element's font.
text-bottom
- Aligns the bottom of the element with the bottom of the parent element's font.
middle
- Aligns the middle of the element with the baseline plus half the x-height of the parent.
<length>
- Aligns the baseline of the element at the given length above the baseline of its parent.
<percentage>
- Like <length> values, with the percentage being a percent of the
line-height
property.
(Negative values are allowed for <length> and <percentage>.)
The following two values vertically align the element relative to the entire line rather than relative to its parent:
top
- Align the top of the element and its descendants with the top of the entire line.
bottom
- Align the bottom of the element and its descendants with the bottom of the entire line.
For elements that do not have a baseline, the bottom margin edge is used instead.
Values (for table cells)
baseline
(andsub
,super
,text-top
,text-bottom
,<length>
, and<percentage>
)- Align the baseline of the cell with the baseline of all other cells in the row that are baseline-aligned.
top
- Align the top padding edge of the cell with the top of the row.
middle
- Center the padding box of the cell within the row.
bottom
- Align the bottom padding edge of the cell with the bottom of the row.
Negative values are allowed.
Formal syntax
baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>
Example
HTML
<div>An <img src="https://mdn.mozillademos.org/files/12245/frame_image.svg" alt="link" width="32" height="32" /> image with a default alignment.</div> <div>An <img class="top" src="https://mdn.mozillademos.org/files/12245/frame_image.svg" alt="link" width="32" height="32" /> image with a text-top alignment.</div> <div>An <img class="bottom" src="https://mdn.mozillademos.org/files/12245/frame_image.svg" alt="link" width="32" height="32" /> image with a text-bottom alignment.</div> <div>An <img class="middle" src="https://mdn.mozillademos.org/files/12245/frame_image.svg" alt="link" width="32" height="32" /> image with a middle alignment.</div>
CSS
img.top { vertical-align: text-top; } img.bottom { vertical-align: text-bottom; } img.middle { vertical-align: middle; }
Output
Specifications
Specification | Status | Comment |
---|---|---|
CSS Transitions The definition of 'vertical-align' in that specification. |
Working Draft | Defines vertical-align as animatable. |
CSS Level 2 (Revision 1) The definition of 'vertical-align' in that specification. |
Recommendation | Add the <length> value and allows it to be applied to element with a display type of table-cell . |
CSS Level 1 The definition of 'vertical-align' in that specification. |
Recommendation | Initial definition |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 1.0 | (Yes) | 1.0 (1.7 or earlier) | 4.0 | 4.0 | 1.0 (85) |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | 1.0 | 1.0 | (Yes) | 1.0 (1.0) | (Yes) | (Yes) | 1.0 |
See also
Document Tags and Contributors
Tags:
Contributors to this page:
Sebastianz,
wbamberg,
kanaka,
erikadoyle,
Druzion,
Lemondoge,
Prinz_Rana,
Simplexible,
teoli,
mrenty,
Delapouite,
rolfedh,
SphinxKnight,
sailik1991,
fscholz,
marfire,
tregagnon,
sjrct,
p2world,
christopheraue,
kscarfone,
g.brammer,
it_student,
Sheppy,
timehat,
ethertank,
BijuGC,
DBaron,
Mgjbot,
Itnix,
Nickolay
Last updated by:
Sebastianz,