How to Add a Fixed Width Column with CSS Flexbox
On this page, you will find out how to add a fixed-width column with the help of CSS Flexbox. To achieve this, you need to use the flex or flex-basis property.
Solution with Flexbox
If you want to have a fixed-width column with Flexbox, you need to use the CSS flex or flex-basis property.
First of all, we set the display of our <div> container to "flex". Then, we specify the flex of the "grey" class as "0 0 50px". Here, the first value specifies flex-grow, the second defines flex-shrink, and the last one specifies flex-basis.
For both the "green" and "blue" classes, we set the flex to 1.
Example of setting a fixed-width column with Flexbox:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.flexbox {
display: flex;
}
.grey {
background: #adadad;
flex: 0 0 50px;
}
.green {
background: #32c962;
flex: 1;
}
.blue {
background: #3b66db;
flex: 1;
}
</style>
</head>
<body>
<div class="flexbox">
<div class="grey">1</div>
<div class="green">2</div>
<div class="blue">3</div>
</div>
</body>
</html>Result
<div class="demo px-10 mt-5 mb-20">
<div class="flexbox"> <div class="grey">1</div> <div class="green">2</div> <div class="blue">3</div> </div>
</div>
We've got a problem here! When the text in <div class="grey">1</div> is longer than the fixed width you've set, it will overflow and mess up the layout of the flexbox.
To fix this, you can add the overflow: hidden; and white-space: nowrap; CSS properties to the .grey class. This will prevent the overflow and keep the text on a single line.
Here's the updated code:
How to Add a Fixed Width Column with CSS Flexbox - Full Example
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.flexbox {
display: flex;
}
.grey {
background: #adadad;
flex: 0 0 50px;
overflow: hidden;
white-space: nowrap;
}
.green {
background: #32c962;
flex: 1;
}
.blue {
background: #3b66db;
flex: 1;
}
</style>
</head>
<body>
<div class="flexbox">
<div class="grey">Some really long text that should not overflow</div>
<div class="green">2</div>
<div class="blue">3</div>
</div>
</body>
</html>Now, even if the text in <div class="grey"> is longer than the fixed width of 50 pixels, it will not overflow and will stay on a single line.