如何在flexbox中每行显示3个项目?

You*_*aya 11 css css3

我有一个列表,我希望li水平显示我的元素,每行3个.我一直试图得到我想要的东西,但没有运气.有解决方案吗?

<div class="serv">
  <ul>                                             
    @foreach(App\Http\Controllers\HomeController::getservice($service->id) as 
    $key => $value)
    <li>
      <span class="h3-service">{{$value->title}}</span>
      <p>{!!$value->description!!}</p>
    </li>
    @endforeach
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)
.serv ul {
  display: inline-flex;
  margin: 0;
  padding: 0;
  width: 33%;
  text-align: left;
  float: left;
}
.serv ul li {
  list-style: none;
  display: inline-block;
  padding: 0;
}
.serv ul li span {
  padding: 0;
}
Run Code Online (Sandbox Code Playgroud)

Sti*_*ers 20

Flex容器:

  • 你可能想使用display: flexinline-flex.
  • 添加flex-wrap: wrap以允许包装到多行上.
  • 删除width: 33%让它成长.

Flex项目:

  • flex: 0 0 33.333333%每行添加3个项目.

.serv ul {
  display: flex;
  flex-wrap: wrap;
  padding-left: 0;
}

.serv ul li {
  list-style: none;
  flex: 0 0 33.333333%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="serv">
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如何将其与弹性间隙结合起来。如果该项目有间隙:1em 或应用任何其他值,并且每行仅显示两个,则它似乎会中断。 (3认同)
  • @BenjaminK 对于填充添加 box-sizing: border-box 到 li,对于边距说 1em 将其更改为 flex: 0 0 calc(33.333333% - 2em)。 (2认同)