I tried to align my text to the bottom of a div from other posts and answers in Stack Overflow I learned to handle this with different CSS properties. But I can't get it done. Basically my HTML code is like this:
<div style='height:200px; float:left; border:1px solid #ff0000; position:relative;'> <span style='position:absolute; bottom:0px;'>A Text</span> </div>
The effect is that in FF I just get vertical line (the div in a collapsed way) and the text is written next to it. How can I prevent the div
collapsing but having the width fitting to the text?
Use the text-align property to align the inner content of the block element. Use the bottom and left properties. The bottom property specifies the bottom position of an element along with the position property. The left property specifies the left position of an element along with the position property.
Enclose the text in a p tag with display:inline-block . Set vertical-align to the p element. Save this answer.
If position: absolute; or position: fixed; - the bottom property sets the bottom edge of an element to a unit above/below the bottom edge of its nearest positioned ancestor. If position: relative; - the bottom property makes the element's bottom edge to move above/below its normal position.
It is perfectly fine if you want to go with the display: table-cell
solution. But instead of hacking it out, we have a better way to accomplish the same using display: flex;
. flex
is something which has a decent support.
.wrap { height: 200px; width: 200px; border: 1px solid #aaa; margin: 10px; display: flex; } .wrap span { align-self: flex-end; }
<div class="wrap"> <span>Align me to the bottom</span> </div>
In the above example, we first set the parent element to display: flex;
and later, we use align-self
to flex-end
. This helps you push the item to the end of the flex
parent.
flex
)If you want to align the text to the bottom, you don't have to write so many properties for that, using display: table-cell;
with vertical-align: bottom;
is enough
div { display: table-cell; vertical-align: bottom; border: 1px solid #f00; height: 100px; width: 100px; }
<div>Hello</div>
(Or JSFiddle)
You now can do this with Flexbox justify-content: flex-end
now:
div { display: flex; justify-content: flex-end; align-items: flex-end; width: 150px; height: 150px; border: solid 1px red; }
<div> Something to align </div>
Consult your Caniuse to see if Flexbox is right for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With