Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to vertically align both image and text in a DIV using CSS?

Tags:

html

css

image

I have an image and some text inside a div and I'd like to put the image and the text in the vertical center of the div using CSS. The problem is that I don't know how many lines of text I will have but the text and the image must be ALWAYS in the middle. For example, when there's only one line of text the div should look like this:

#################################### #  _______                         # # |       |                        # # |       |                        # # | IMAGE |    text text text      # # |       |                        # # |_______|                        # #                                  # #################################### 

If eventually I have more lines or the height of text is larger than the height of the image then the image should be aligned, just like this:

#################################### #                                  # #              text text text      # #  _______     text text text      # # |       |    text text text      # # |       |    text text text      # # | IMAGE |    text text text      # # |       |    text text text      # # |_______|    text text text      # #              text text text      # #              text text text      # #                                  # #################################### 

I'm in trouble to get this effect, is there any way without using javascript to do this?

Obs. The parent div of the div I'm referring to have position:relative so there's another problem.

like image 476
Cainã Avatar asked Nov 16 '12 00:11

Cainã


People also ask

How do I align text and image vertically in CSS?

Using flex property in css.To align text vertically center by using in flex using align-items:center; if you want to align text horizontally center by using in flex using justify-content:center; .

How do I vertically align two items in a div?

To align two <div> elements vertically in Bootstrap 3, you can try using the CSS Flexible Box Layout. In the example below, we display the needed row as a flex container box with the CSS display property and then, align the flex-items (columns) vertically with the align-items property.

How do I align text with an image in CSS?

An <img> element is an inline element (display value of inline-block ). It can be easily centered by adding the text-align: center; CSS property to the parent element that contains it. To center an image using text-align: center; you must place the <img> inside of a block-level element such as a div .


1 Answers

Give both the image and the text a vertical-align: middle - the text needs to be contained in an element that is also display: inline. So markup like this:

<div>   <span><img src="blah.jpg" /></span>   <span>text text text</span> </div>  div {   display: table; }  img {   vertical-align: middle;   display: table-cell; } span {   vertical-align: middle;   display: table-cell; } 

should work. Here's a jsfiddle to demonstrate (edited fiddle to show everything is vertically aligned within a container as well.)

EDIT: to get the behavior you want, I recommend using additional display properties - table for the container and table-cell for the contained elements. Fiddle link has been updated with the changes.

EDIT: the only way I could think of to get it to work was to wrap the image in another inline container, in this case a span. I've updated the fiddle to demonstrate.

like image 154
kinakuta Avatar answered Sep 21 '22 09:09

kinakuta