Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I vertically align text in a div?

I am trying to find the most effective way to align text with a div. I have tried a few things and none seem to work.

.testimonialText {    position: absolute;    left: 15px;    top: 15px;    width: 150px;    height: 309px;    vertical-align: middle;    text-align: center;    font-family: Georgia, "Times New Roman", Times, serif;    font-style: italic;    padding: 1em 0 1em 0;  }
<div class="testimonialText">    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.  </div>
like image 695
shinjuo Avatar asked May 30 '10 19:05

shinjuo


People also ask

How do you vertical align a text in a div?

Answer: Use the CSS line-height property Suppose you have a div element with the height of 50px and you have placed some link inside the div that you want to align vertically center. The simplest way to do it is — just apply the line-height property with value equal to the height of div which is 50px .

How do you align text vertically?

1 Select the text you want to center between the top and bottom margins. 2 On the Page Layout tab, click the Page Setup Dialog Box Launcher. 3 Select the Layout tab. 4 In the Vertical alignment box, click Center 5 In the Apply to box, click Selected text, and then click OK.

How do I align text vertically in CSS?

To center both vertically and horizontally, use padding and text-align: center : I am vertically and horizontally centered.

Does vertical align work with div?

The CSS vertical align property works smoothly with tables, but not with divs or any other elements. When you use it in a div, it aligns the element alongside the other divs and not the content — which is what we usually want). This only works with display: inline-block; .


2 Answers

The correct way to do this in modern browsers is to use Flexbox.

See this answer for details.

See below for some older ways that work in older browsers.


Vertical Centering in CSS
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html

Article summary:

For a CSS 2 browser, one can use display:table/display:table-cell to center content.

A sample is also available at JSFiddle:

div { border:1px solid green;}
<div style="display: table; height: 400px; overflow: hidden;">   <div style="display: table-cell; vertical-align: middle;">     <div>       everything is vertically centered in modern IE8+ and others.     </div>   </div> </div>

It is possible to merge hacks for old browsers (Internet Explorer 6/7) into styles with using # to hide styles from newer browsers:

div { border:1px solid green;}
<div style="display: table; height: 400px; #position: relative; overflow: hidden;">   <div style=     "#position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">     <div style=" #position: relative; #top: -50%">       everything is vertically centered     </div>   </div> </div>
like image 117
Robert Harvey Avatar answered Oct 13 '22 22:10

Robert Harvey


You need to add the line-height attribute and that attribute must match the height of the div. In your case:

.center {    height: 309px;    line-height: 309px; /* same as height! */  }
<div class="center">    A single line.  </div>

In fact, you could probably remove the height attribute altogether.

This only works for one line of text though, so be careful.

like image 34
David Avatar answered Oct 13 '22 20:10

David