Home >Web Front-end >CSS Tutorial >Flexbox – The Modern Way to Align and Distribute Space
Hey there! Ready to dive into one of the coolest and most powerful tools in CSS? Today, we’re going to explore Flexbox. If you’ve ever struggled with aligning items or distributing space in a neat and responsive way, Flexbox is your new best friend.
Flexbox (Flexible Box Layout) is a one-dimensional layout system that allows you to control the alignment, spacing, and distribution of elements inside a container—even when the size of those elements is unknown or dynamic.
Think of Flexbox as a toolbox to create layouts that can stretch, shrink, or align depending on the available space.
To start using Flexbox, you only need to set display: flex on a container. Once you do that, all the direct children of that container become flex items, and they’ll immediately start behaving differently.
<div class="flex-container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div>
.flex-container { display: flex; }
Now, all the items inside .flex-container are flex items and can be easily manipulated.
By default, Flexbox arranges items in a row (horizontally), but what if you want them in a column (vertically)? Flexbox gives you total control with the flex-direction property.
.flex-container { display: flex; flex-direction: column; }
Now, the items will stack vertically!
Let’s say you have three items, and you want to spread them out evenly in your container. This is where justify-content comes in handy.
.flex-container { display: flex; justify-content: space-between; }
Now, the items will be evenly spaced within the container.
While justify-content controls horizontal alignment, align-items takes care of vertical alignment (or along the cross-axis). Here are your options:
.flex-container { display: flex; align-items: center; }
Now, all the items will be vertically centered within the container.
Sometimes, you want certain items to grow, shrink, or have a fixed starting size. The flex-grow, flex-shrink, and flex-basis properties let you control that behavior:
Example:
.item { flex-grow: 1; flex-shrink: 0; flex-basis: 100px; }
This ensures that the item starts at 100px, but it can grow to fill extra space if needed, without shrinking.
Let’s put all this together with an example!
<div class="flex-container"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </div>
.flex-container { display: flex; flex-direction: row; justify-content: space-around; align-items: center; height: 300px; background-color: #f0f0f0; } .item { background-color: #4CAF50; padding: 20px; color: white; flex-grow: 1; }
In this example:
Flexbox takes away much of the complexity of layout design that we used to struggle with in CSS. No more floats, no more worrying about clearing, and much easier responsive design!
Ridoy Hasan
The above is the detailed content of Flexbox – The Modern Way to Align and Distribute Space. For more information, please follow other related articles on the PHP Chinese website!