1

I'm trying to design an element where there are multiple cards in a flexbox and after every fourth card I need to break the row such that the next four cards share another row just below the first row and this will go on for every fourth card inside the element container. I partially achieved it but now all the cards are coming inside a single card and again next set of cards are coming inside a single card in the same row instead of changing column and forming next row. Have a look at the image below to get a clearer view of what I'm trying to achieve here.

    <div class="content__card">
          <div class="card">
            <img
              src="#"
              alt="Person" class="card__image">
            <p class="card__name">Lily-Grace Colley</p>
            <div class="grid-container">
    
              <div class="grid-child-posts">
                156 Post
              </div>
    
              <div class="grid-child-followers">
                1012 Likes
              </div>
            </div>
            <ul class="social-icons">
              <li><a href="#"><i class="fa fa-instagram"></i></a></li>
              <li><a href="#"><i class="fa fa-codepen"></i></a></li>
            </ul>
            <button class="btn draw-border">Follow</button>
            <button class="btn draw-border">Message</button>
          </div>
          <p class="breaker"></p>
    
          <div class="card">
            <img
              src="#"
              alt="Person" class="card__image">
            <p class="card__name">Lily-Grace Colley</p>
            <div class="grid-container">
    
              <div class="grid-child-posts">
                156 Post
              </div>
    
              <div class="grid-child-followers">
                1012 Likes
              </div>
            </div>
            <ul class="social-icons">
              <li><a href="#"><i class="fa fa-instagram"></i></a></li>
              <li><a href="#"><i class="fa fa-codepen"></i></a></li>
            </ul>
            <button class="btn draw-border">Follow</button>
            <button class="btn draw-border">Message</button>
          </div>
          <p class="breaker"></p>
           
           <div class="card">
            <img
              src="#"
              alt="Person" class="card__image">
            <p class="card__name">Lily-Grace Colley</p>
            <div class="grid-container">
    
              <div class="grid-child-posts">
                156 Post
              </div>
    
              <div class="grid-child-followers">
                1012 Likes
              </div>
            </div>
            <ul class="social-icons">
              <li><a href="#"><i class="fa fa-instagram"></i></a></li>
              <li><a href="#"><i class="fa fa-codepen"></i></a></li>
            </ul>
            <button class="btn draw-border">Follow</button>
            <button class="btn draw-border">Message</button>
          </div>
          <p class="breaker"></p>
           </div>

CSS

    .content__card {
      display: flex;
       margin-top: 2%;
      }
        
     .breaker {
          display: none;
        }
     .breaker:nth-child(4n) {
          display: block;
          width: 100%;
          height: 0;
        }
    .card {
      background-color: #222831;
      border-radius: 5px;
      display: flex;
      flex-direction: column;
      align-items: center;
      box-shadow: rgba(0, 0, 0, 0.7);
      color: white;
      overflow: auto;
    }
    .grid-container {
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-gap: 20px;
      font-size: 1.2em;
    }

Flex-break

Paulie_D
  • 107,962
  • 13
  • 142
  • 161
surjendu_dey
  • 578
  • 2
  • 11
  • 28

3 Answers3

0

.content__card {
        display: flex;
        margin-top: 2%;
        flex-wrap: wrap;
      }

      .breaker {
        display: none;
      }
      .breaker:nth-child(4n) {
        display: block;
        width: 100%;
        height: 0;
      }
      .card {
        background-color: #222831;
        border-radius: 5px;
        display: flex;
        flex-direction: column;
        align-items: center;
        box-shadow: rgba(0, 0, 0, 0.7);
        color: white;
        overflow: auto;
        margin: 10px 3px;
      }
      .grid-container {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-gap: 20px;
        font-size: 1.2em;
      }
<body>
    <div class="content__card">
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>

      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>

      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
      <div class="card">
        <img src="#" alt="Person" class="card__image" />
        <p class="card__name">Lily-Grace Colley</p>
        <div class="grid-container">
          <div class="grid-child-posts">
            156 Post
          </div>

          <div class="grid-child-followers">
            1012 Likes
          </div>
        </div>
        <ul class="social-icons">
          <li>
            <a href="#"><i class="fa fa-instagram"></i></a>
          </li>
          <li>
            <a href="#"><i class="fa fa-codepen"></i></a>
          </li>
        </ul>
        <button class="btn draw-border">Follow</button>
        <button class="btn draw-border">Message</button>
      </div>
    </div>
  </body>

Try this

0

No need for breaker.

<p class="breaker"></p>

Instead of using flex-basis and max-width to card

.card {
  margin:2%;
  flex-basis:calc(25% - 4%); // minus the margin both right and left
  max-width:calc(25% - 4%); // minus the margin both right and left
}

max-width:calc(25% - 4%); - if we have take 25%,that is -> 25% * 4 card = 100% . Here add margin right and left 2% so, minus from width we get this.

Also Change

 box-shadow: rgba(0, 0, 0, 0.7);

to

box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.7);

Because,

The box-shadow CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color.

.content__card {
  display: flex;
  margin-top: 2%;
  flex-wrap: wrap;
}

.card {
  background-color: #222831;
  border-radius: 5px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content:center;
  text-align:center;
  box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.7);
  color: white;
  overflow: auto;
  margin:2%;
  flex-basis:calc(25% - 4%);
  max-width:calc(25% - 4%);
}
.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 20px;
  font-size: 1.2em;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

<div class="content__card">
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>

    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>

     <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
    <div class="card">
      <img
        src="#"
        alt="Person" class="card__image">
      <p class="card__name">Lily-Grace Colley</p>
      <div class="grid-container">

        <div class="grid-child-posts">
          156 Post
        </div>

        <div class="grid-child-followers">
          1012 Likes
        </div>
      </div>
      <ul class="social-icons">
        <li><a href="#"><i class="fa fa-instagram"></i></a></li>
        <li><a href="#"><i class="fa fa-codepen"></i></a></li>
      </ul>
      <button class="btn draw-border">Follow</button>
      <button class="btn draw-border">Message</button>
    </div>
    
</div>
Rayees AC
  • 4,426
  • 3
  • 8
  • 31
-2

why not flex-wrap: wrap ? see here https://codepen.io/yael-screenovate/pen/abNXWvj

YTG
  • 956
  • 2
  • 6
  • 19