Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flexbox align to bottom

Tags:

html

css

flexbox

I have the following layout http://jsbin.com/joyetaqase/1/edit?html,css,output

<div class="row">

    <div class="col">
      <h2>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</h2>
      <p>my footer</p>
    </div>

     <div class="col">
      <h2>Lorem Ipsum.</h2>
      <p>my footer</p>
    </div>

  </div>

Using flexbox I'm trying to make same height and same width to the .col divs.

My question is: how can I put the <p> to stick at the bottom of the box?

Layout should look like:

enter image description here

I know I can make the <p> absolute and use bottom:0; but I want to achieve this with flexbox, is it possible?

Can someone explain?

like image 501
Hiero Avatar asked Oct 19 '22 13:10

Hiero


2 Answers

You can do following way. Give display: flex; flex-direction: column; to .col and flex: 1 0 auto; to h2

.row {
  width: 500px;
  font-family: monospace;
  display:flex;
}

.col {
  width: 50%;
  border: 1px solid #000;
  padding: 10px;
  box-sizing: border-box;
  display: flex;
    flex-direction: column;
}

h2, p {
  font-weight: normal;
  margin: 0;
}

h2 {
    flex: 1 0 auto;
}
 <div class="row">
    
    
    <div class="col">
      <h2>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</h2>
      <p>my footer</p>
    </div>
    
     <div class="col">
      <h2>Lorem Ipsum.</h2>
      <p>my footer</p>
    </div>
    
    
  </div>

Updated JSBin

like image 79
ketan Avatar answered Nov 15 '22 05:11

ketan


Make .col a nested, column-direction flex container.

.col {
  width: 50%;
  border: 1px solid #000;
  padding: 10px;
  box-sizing: border-box;

  /* NEW */
  display: flex;
  flex-direction: column;          /* stack <h2> and <p> vertically */
  justify-content: space-between;  /* align <h2> at top and <p> at bottom */
}
like image 37
Michael Benjamin Avatar answered Nov 15 '22 07:11

Michael Benjamin