How do I verically center the content of floating div (which height I don't know)?
There is very simple HTML and CSS (see this fiddle: http://jsfiddle.net/DeH6E/1/)
<div class="floating">
This should be in the middle
</div>
.floating {
height: 100px;
float: left;
border: 1px solid red;
vertical-align: middle;
}
How do I make the sentence "This should be in the middle" appear really in the middle (vertically centered)? vertical-align: middle
does not seem to work. I have tried display: table-cell
and it didn't work either. What's the best way to solve this issue? I'd like to avoid inserting any other HTML tags, do it just via CSS.
(Just to make it clear: I don't know the actual height of the container, 100px is just for the example)
EDIT: I'd like you to understand me, so... Always when I design web page, I follow the rule that HTML holds the content and CSS is responsible for the visual style. I never mix them up together or use one just to enable the other. In this case, I want to stick with this rule too. I don't want to insert HTML element just for the CSS.
The others are right, you need to nest two DOM elements which gives you more options controlling the centering. Here's the code:
I was also looking for a solution to this and eventually came up with this:
http://jsfiddle.net/w6j9mgjp/1/
it only works for a single line of text, though.
If you know the height, then
If not, use javascript to set line-height after rendering.
http://jsfiddle.net/DeH6E/4/
Add the text inside a
<p>
.HTML
CSS
http://jsfiddle.net/DeH6E/2/
the text inside of your div needs to be in its own div tag, and that div tag needs to be set to display:table-cell; and vertical-align:middle; while your .floating div needs to be set as display:table;
or you can set a p tag or some other sort of formatting tag in there to contain your text, eg span, or p
Just play with the pseudo selector.