When appending divs to a div with a fixed height, the child divs will appear from top to bottom, sticking at the top border.
┌─────────────────────────┐
│ Child Div 1 │
│ Child Div 2 │
│ │
│ │
│ │
└─────────────────────────┘
I’m now trying to display them from bottom to top like this (sticking to the bottom border):
┌─────────────────────────┐
│ │
│ │
│ │
│ Child Div 1 │
│ Child Div 2 │
└─────────────────────────┘
┌─────────────────────────┐
│ │
│ │
│ Child Div 1 │
│ Child Div 2 │
│ Child Div 3 │
└─────────────────────────┘
┌───────────────────────┬─┐
│ Child Div 2 │▲│
│ Child Div 3 │ │
│ Child Div 4 │ │
│ Child Div 5 │█│
│ Child Div 6 │▼│
└───────────────────────┴─┘
And so on… I hope you get what I mean.
Is this simply doable with CSS (something like vertical-align: bottom)? Or do I have to hack something together with JavaScript?
All the answers miss the scrollbar point of your question. And it’s a tough one. If you only need this to work for modern browsers and IE 8+ you can use table positioning,
vertical-align:bottomandmax-height. See MDN for specific browser compatibility.Demo (vertical-align)
html
Other than that, I think it’s not possible with CSS only. You can make elements stick to the bottom of their container with
position:absolute, but it’ll take them out of the flow. As a result they won’t stretch and make the container to be scrollable.Demo (position-absolute)