CSS

CSS Vertical Align

CSS Vertical Align

Posted by Kuo on February 22, 2015

Vertical Align

Basic Approach
#box {
  height:      90px;
  line-height: 90px;
}

It only works for a single line of text though, because we set the line’s height to the same height as the containing box element.


A more versatile approach

And here is another way to align text vertically. This solution will work for a single line and multiple lines of text, but it still requires a fixed height container:

<div>
  <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
</div>

The CSS just sizes the <div>, vertically center aligns the <span> by setting the <div>’s line-height equal to its height, and makes the <span> an inline-block with vertical-align: middle. Then it sets the line-height back to normal for the <span>, so its contents will flow naturally inside the block.

div {
  width: 250px;
  height: 100px;
  line-height: 100px;
  text-align: center;
}

span {
  display: inline-block;
  vertical-align: middle;
  line-height: normal;      
}

Simulating table display

And here is another option, which may not work on older browsers that don’t support display: table and display: table-cell (basically that means Internet Explorer 7). The HTML is the same as the second example:

<div>
  <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
</div>

Using CSS we ‘simulate’ table display behavior, since tables support vertical alignment:

div {
  display: table;
  width: 250px;
  height: 100px;
  text-align: center;
}

span {
  display: table-cell;
  vertical-align: middle;
}

Using absolute positioning

This technique uses an absolutely positioned element setting top, bottom, left and right to 0.