Reputation: 395
Thank you for reading the post. I'm having a weird issue with Flexbox. I have a div container with some divs that need to be displayed 3 items in a row, 2 items for screen sizes less than 992 and 1 item for less than 568.
To achieve this I used display: flex
and flex-wrap: wrap
to the container and flex: 1 0 26%
to the inner divs. It seems to be working fine but the problem is with the inner contents of the divs. They are all left-aligned.
I then used display: flex
, flex-direction: column
and align-items: center
to the inner container but then all the inner contents get centered but not left-aligned.
Here's what I've been trying to achieve:
Here's the snippet:
#topic-list {
display: flex;
flex-wrap: wrap;
}
#topic-list div.list-wrapper {
flex: 1 0 26%;
margin: 10px;
border: 1px solid #ccc;
padding: 10px;
display: flex;
flex-direction: column;
align-items: center;
}
<div id="topic-list">
<div class="list-wrapper">
<div class="el">A</div>
<div>
<a href="#">Apple</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">B</div>
<div>
<a href="#">Ball</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">F</div>
<div>
<a href="#">Fan</a>
</div>
<div>
<a href="#">Fanta</a>
</div>
<div>
<a href="#">Follow</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">I</div>
<div>
<a href="#">Inspire</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">L</div>
<div>
<a href="#">Love</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">M</div>
<div>
<a href="#">Mad</a>
</div>
<div>
<a href="#">Money</a>
</div>
<div>
<a href="#">Mother</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">S</div>
<div>
<a href="#">Sad</a>
</div>
<div>
<a href="#">Son</a>
</div>
<div>
<a href="#">Sick</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">T</div>
<div>
<a href="#">Tea</a>
</div>
<div>
<a href="#">Total</a>
</div>
</div>
<div class="list-wrapper">
<div class="el">W</div>
<div>
<a href="#">Wrap</a>
</div>
</div>
</div>
Upvotes: 0
Views: 414
Reputation: 1883
You can have one more div inside the list-wrapper and make its text align left.
#topic-list {
display: flex;
flex-wrap: wrap;
}
#topic-list div.list-wrapper {
flex: 1 0 26%;
margin: 10px;
border: 1px solid #ccc;
padding: 10px;
display: flex;
flex-direction: column;
align-items: center;
}
.test {
text-align: left;
}
<div id="topic-list">
<div class="list-wrapper">
<div class='test'>
<div class="el">A</div>
<div>
<a href="#">Apple</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">B</div>
<div>
<a href="#">Ball</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">F</div>
<div>
<a href="#">Fan</a>
</div>
<div>
<a href="#">Fanta</a>
</div>
<div>
<a href="#">Follow</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">I</div>
<div>
<a href="#">Inspire</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">L</div>
<div>
<a href="#">Love</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">M</div>
<div>
<a href="#">Mad</a>
</div>
<div>
<a href="#">Money</a>
</div>
<div>
<a href="#">Mother</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">S</div>
<div>
<a href="#">Sad</a>
</div>
<div>
<a href="#">Son</a>
</div>
<div>
<a href="#">Sick</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">T</div>
<div>
<a href="#">Tea</a>
</div>
<div>
<a href="#">Total</a>
</div>
</div>
</div>
<div class="list-wrapper">
<div class='test'>
<div class="el">W</div>
<div>
<a href="#">Wrap</a>
</div>
</div>
</div>
</div>
Upvotes: 3