1

How to align a div vertically to middle and another div vertically to bottom inside a flex column?

Expected result: https://i.stack.imgur.com/y5XIb.png

Michael Benjamin
  • 346,931
  • 104
  • 581
  • 701
Rob
  • 41
  • 1
  • 3

3 Answers3

7

.container {
  border: 1px solid black;
  height: 200px;
  width: 50px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.first-item {
  margin-top: auto;
  margin-bottom: auto;
}
<div class="container">
  <div class="first-item">First</div>
  <div class="second-item">Second</div>
</div>

That should do it. Then the second item should be pushed to the bottom while the first item stays in the middle. A pure flexbox solution not using absolute positioning.

5tormTrooper
  • 893
  • 7
  • 21
0

You have to use the line-height property with the same height value

.parent{
  display: table;
  position: relative;
  border: 1px solid;

  height: 150px;
  line-height: 150px;
}
.parent div{
  position: absolute;
  bottom: 0;
  line-height: 20px;
}
<div class="parent">
  test
  <div>test</div>
</div>
alessandrio
  • 4,282
  • 2
  • 29
  • 40
-1

Take a look at this.

.parent{
  display: flex;
    height: 150px;
    width: 50px;
    border: 1px solid black;
    align-items: center;
    justify-content: center;
}

.two{
    align-self: flex-end;
    position: absolute;
}
<div class="parent">
   <div>test</div>
   <div class="two">test</div>
</div>
Saravanan I
  • 1,229
  • 6
  • 9