Three-column HTML flex box: how to set the middle one to get all the remaining space?
The proper way to do it is with flex
. Set flex
to 1 1 auto
for the middle column, and 0 0 100px
for the side columns. This makes it so the side columns are always the specified width (or width of content, if set to auto
), and the middle column takes up the remaining space (growing/shrinking accordingly).
#main-container {
display: flex;
justify-content: space-between;
align-items: center;
}
#center-content {
/* Lets middle column shrink/grow to available width */
flex: 1 1 auto;
}
#left-content,
#right-content {
/* Forces side columns to stay same width */
flex: 0 0 100px;
}
img {
/* Shrinks images to fit container */
max-width: 100%;
}
<div id="main-container">
<div id="left-content">
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
</div>
<div id="center-content">
<div><img src="https://farm6.staticflickr.com/5560/14080568109_9f33dc7964_o.jpg"></div>
</div>
<div id="right-content">
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
<div><img src="http://agevoluzione.com/wp-content/uploads/2014/07/Work-in-progress-1024x603.png"></div>
</div>
</div>
#center-content {
width: calc(100% - 204px);
}
Here is the fiddle: http://jsfiddle.net/sachinvermarip/s1j40s42/1/