cssflexbox

CSS flex box with a fixed height still stretches


I'm trying to create a header with two columns that will fill to the parent container's height. I'm using display:flex for a responsive layout. When I set the header to have a fixed height, the two other sub-divs have a gap between them and the header.

div#container {
    padding:20px;
    background:#F1F1F1;
    display: flex;
    flex-flow:row wrap;
    height:540px;
}
.header{width:100%; height:40px; background:#ccc;}
.content {
    width:150px;
    background:#ddd;
    padding:10px;
    margin-left: 10px;
}

enter image description here

Fiddle

EDIT

The duplicate question is a nice description of the flex properties, but I'm not seeing an example like this addressed in it. If the height:40px is removed from the header, the header div will stretch down to the other divs. When the header height is specified, a gap exists.


Solution

  • align-content default value is stretch. Change that to align-content: start; and it should be okay.

    .content-wrapper{
      display: flex;
      flex: 1;
    }
    div#container {
        padding: 20px;
        background: #F1F1F1;
        display: flex;
        flex-flow: column wrap;
        align-content: start;
        height: 540px;
        border: 1px solid red;
        box-sizing: border-box;
    }
    .header{width:100%; height:40px; background:#ccc;}
    .content {
        width:150px;
        background:#ddd;
        padding:10px;
        margin-left: 10px;
    }
    <div id="container">
      <div class="header">
        HEADER
      </div>
      <div class="content-wrapper">
        <div class="content">
          <h1>Title 1</h1>
          <div>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,...
          </div>
        </div>
        <div class="content">
          <h1>Title 2</h1>
          <div>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,...
          </div>
        </div>
      </div>
    </div>