ttmt
ttmt

Reputation: 4986

CSS Control number of flex items on a row

In the example I have a block div containing div items, the div items are styled to be circles.

I would like to use flex to display them in two rows of three.

I have them displaying in two rows of three but the items are stretched out of shape.

How can I keep the items as circles and display them as two rows of three

body{
  background: grey;
}

.block{
  background: white;
  display: flex;
  height: 400px;
  flex-flow: row wrap;
  justify-content: space-around;
  padding: 20px;
  position: absolute;
  right: 40px;
  top: 80px;
  width: 540px;
  z-index: 1000;
}

.block__item{
    background: red;
    border-radius: 80px;
    color: white;
    flex-basis: 33%;
    height: 80px;
    text-align: center;
    width: 80px;
  }
<div class="block">
    <div class="block__item">1</div>
    <div class="block__item">2</div>
    <div class="block__item">3</div>
    <div class="block__item">4</div>
    <div class="block__item">5</div>
    <div class="block__item">6</div>
</div>

Upvotes: 1

Views: 121

Answers (1)

D-Money
D-Money

Reputation: 2465

If you nest the circles inside the block--item class you can centre them inside without distorting their shape:

body {
  background: grey;
}

.block {
  background: white;
  display: flex;
  height: 400px;
  flex-flow: row wrap;
  justify-content: space-around;
  padding: 20px;
  position: absolute;
  right: 40px;
  top: 80px;
  width: 540px;
  z-index: 1000;
}

.block__item {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 33%;
}

.block__item_circle {
  display: flex;
  background: red;
  justify-content: center;
  align-items: center;
  border-radius: 80px;
  color: white;
  height: 80px;
  text-align: center;
  width: 80px;
}
<div class="block">
  <div class="block__item">
    <div class="block__item_circle">1</div>
  </div>
  <div class="block__item">
    <div class="block__item_circle">2</div>
  </div>
  <div class="block__item">
    <div class="block__item_circle">3</div>
  </div>
  <div class="block__item">
    <div class="block__item_circle">4</div>
  </div>
  <div class="block__item">
    <div class="block__item_circle">5</div>
  </div>
  <div class="block__item">
    <div class="block__item_circle">6</div>
  </div>
</div>

Upvotes: 1

Related Questions