2

I have the following layout:

.app-container {
  display: flex;
  flex-flow: row wrap;
  align-content: center;
  justify-content: space-around;
  min-height: 100vh;
  background-color: #4caf50;
  font-family: "Roboto", "Noto", sans-serif;
  font-size: 14px;
  font-weight: normal;
  color: rgba(0, 0, 0, 0.87);
  margin-bottom: 84px;
}

.card {
  background-color: #fff;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.12);
  margin: 8px;
  border-radius: 2px;
  min-width: 304px;
  max-width: 466px;
  font-family: 'Roboto', 'Noto', sans-serif;
  flex-grow: 1;
}

.card .text {
  padding: 16px 16px 25px 16px;
  font-size: 14px;
}
<div class="app-container">
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
</div>

Now what I want to happen is for the .card divs to float naturally to be on the same line where there is space, but remain centered vertically and horizontaly (so the height of the cards remains the same instead of the cards expanding to fill the whole row regardless of the contet).

What happens is that if I do not set display:inline-block; my .card divs just stay one per row. But if I change the display, the centering stops working.

How do I fix this?

Michael Benjamin
  • 346,931
  • 104
  • 581
  • 701
Miha Šušteršič
  • 9,742
  • 25
  • 92
  • 163

1 Answers1

1

I believe this is what you're looking for.

.app-container {
  display: flex;
  flex-flow: row wrap;
  align-content: center;
  justify-content: space-around;
  align-items: center;
  min-height: 100vh;
  background-color: #4caf50;
  font-family: "Roboto", "Noto", sans-serif;
  font-size: 14px;
  font-weight: normal;
  color: rgba(0, 0, 0, 0.87);
  margin-bottom: 84px;
}

.card {
  background-color: #fff;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.12);
  margin: 14px;
  border-radius: 2px;
  min-width: 120px;
  max-width: 120px;
  font-family: 'Roboto', 'Noto', sans-serif;
  flex-grow: 1;
}

.card .text {
  padding: 16px 16px 25px 16px;
  font-size: 14px;
}
<div class="app-container">
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
</div>
Serg Chernata
  • 12,280
  • 6
  • 32
  • 50