8

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.

jim31415
  • 8,588
  • 6
  • 43
  • 64

1 Answers1

9

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>
Kushtrim
  • 1,899
  • 6
  • 14