s.khan
s.khan

Reputation: 395

Centering with align-items center everything but not left-aligned

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 the issue: enter image description here

Here's what I've been trying to achieve: enter image description here

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

Answers (1)

Yadab
Yadab

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

Related Questions