Reputation: 1042
I am trying to create a flexbox layout like shown in this jsfiddle. This is the HTML:
<div class="container">
<div class="header">
header
</div>
<div class="content">
</div>
<div class="footer">
footer
</div>
</div>
This is the CSS:
.container {
background-color: green;
height: 300px;
max-height: 300px;
display: flex;
flex-direction: column;
}
.header {
background-color: yellow;
flex: 0 0 50px;
}
.content {
background-color: blue;
flex: 0 0 90%;
overflow: scroll;
}
.footer {
background-color: red;
flex: 0 0 40px;
}
And it works, but I would also limit the size of the entire layout not extend beyond the '.container' elements fixed height.
How can I achieve this?
Thanks, Gerald
Upvotes: 0
Views: 161
Reputation: 7783
You just need to make .content
fill the entire allowed space within the container by adding flex: 1;
property to it.
Working Example:
var i;
for (i = 0; i < 100; i++) {
$(".content").append("<div>hello " + i + "</div>");
}
.container {
background-color: green;
height: 300px;
max-height: 300px;
display: flex;
flex-direction: column;
border:3px solid black;
}
.header {
background-color: yellow;
flex: 0 0 50px;
}
.content {
background-color: blue;
flex: 1;
overflow: scroll;
}
.footer {
background-color: red;
flex: 0 0 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="header">
header
</div>
<div class="content">
</div>
<div class="footer">
footer
</div>
</div>
jsFiddle: https://jsfiddle.net/azizn/0aumg6b0/
Upvotes: 1
Reputation: 5147
replace the old container code in the stylesheet with this one and see if it works
<style>
.container {
background-color: green;
height: 300px;
max-height: 300px;
display: flex;
flex-direction: column;
overflow: auto;
}
.header {
background-color: yellow;
flex: 1;
overflow: scroll;
height: 100px;
}
.content {
background-color: blue;
flex: 7;
overflow: scroll;
}
.footer {
background-color: red;
flex:1;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate, quae beatae esse, impedit est distinctio ducimus dignissimos suscipit similique quos labore libero ab molestiae, velit eveniet, quo. Odit, architecto, totam!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit nisi temporibus, rem fugiat dolorum aliquid aspernatur quibusdam quam aut nihil et dignissimos animi minima laboriosam ipsum culpa quisquam repellat eum!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate, quae beatae esse, impedit est distinctio ducimus dignissimos suscipit similique quos labore libero ab molestiae, velit eveniet, quo. Odit, architecto, totam!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit nisi temporibus, rem fugiat dolorum aliquid aspernatur quibusdam quam aut nihil et dignissimos animi minima laboriosam ipsum culpa quisquam repellat eum!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate, quae beatae esse, impedit est distinctio ducimus dignissimos suscipit similique quos labore libero ab molestiae, velit eveniet, quo. Odit, architecto, totam!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit nisi temporibus, rem fugiat dolorum aliquid aspernatur quibusdam quam aut nihil et dignissimos animi minima laboriosam ipsum culpa quisquam repellat eum!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate, quae beatae esse, impedit est distinctio ducimus dignissimos suscipit similique quos labore libero ab molestiae, velit eveniet, quo. Odit, architecto, totam!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit nisi temporibus, rem fugiat dolorum aliquid aspernatur quibusdam quam aut nihil et dignissimos animi minima laboriosam ipsum culpa quisquam repellat eum!
</div>
<div class="content">
</div>
<div class="footer">
footer
</div>
</div>
Upvotes: 0