如何每行显示三列?

max*_*pan 58 html css html5 css3 flexbox

我一直试图每行显示三列.是否可以使用flexbox?

我目前的CSS是这样的:

.mainDiv {
    display: flex;
    margin-left: 221px;
    margin-top: 43px;
}
Run Code Online (Sandbox Code Playgroud)

此代码将所有内容放在一行中.我想添加一个约束来显示每行三个记录.

Bar*_*run 108

这可能是您正在寻找的:

http://jsfiddle.net/L4L67/

body>div {
  background: #aaa;
  display: flex;
  flex-wrap: wrap;
}

body>div>div {
  flex-grow: 1;
  width: 33%;
  height: 100px;
}

body>div>div:nth-child(even) {
  background: #23a;
}

body>div>div:nth-child(odd) {
  background: #49b;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 你的标记令人困惑.这可行,但考虑让您的示例更容易理解/阅读. (12认同)
  • 如果您不希望子元素伸展以填充空间,请删除`flex-grow`. (2认同)

小智 21

使用网格布局试试这个:

.grid-container {
  display: grid;
  grid-template-columns: auto auto auto;
  padding: 10px;
}
.grid-item {
  background-color: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(0, 0, 0, 0.8);
  padding: 20px;
  font-size: 30px;
  text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid-container">
  <div class="grid-item">1</div>
  <div class="grid-item">2</div>
  <div class="grid-item">3</div>  
  <div class="grid-item">4</div>
  <div class="grid-item">5</div>
  <div class="grid-item">6</div>  
  <div class="grid-item">7</div>
  <div class="grid-item">8</div>
  <div class="grid-item">9</div>  
</div>
Run Code Online (Sandbox Code Playgroud)


Rob*_*ear 18

尽管上面的答案似乎是正确的,但我想添加一个(希望)更具可读性的示例,该示例也保留在不同宽度的3列形式中:

HTML

.flex-row-container {
    background: #aaa;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
}
.flex-row-container > .flex-row-item {
    flex-grow: 1;
    flex: 1 1 30%;
    height: 100px;
}

.flex-row-item {
  background-color: #fff4e6;
  border: 1px solid #f76707;
}
Run Code Online (Sandbox Code Playgroud)

CSS

<div class="flex-row-container">
  <div class="flex-row-item">1</div>
  <div class="flex-row-item">2</div>
  <div class="flex-row-item">3</div>
  <div class="flex-row-item">4</div>
  <div class="flex-row-item">5</div>
  <div class="flex-row-item">6</div>
</div>
Run Code Online (Sandbox Code Playgroud)

工作JSFiddle

希望这有助于其他人.

  • 谢谢你的回答。请看我下面的图片,如何使框 4,5 与 1,2,3 相同?图片:https://prnt.sc/n29bm7 (2认同)
  • 这应该是公认的答案。使用 flex-wrap 属性是一种更好的 Flexbox 方法。 (2认同)

Chr*_*row 11

您现在可以使用网格自动流

https://jsfiddle.net/chalcrow/bqye79kr/1/

CSS

.grid-flow {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);
}
Run Code Online (Sandbox Code Playgroud)

注意 - 这repeat(3, 1fr)意味着 '3 列,每列占用可用空间的 1(相等)部分。

超文本标记语言

<div class="grid-flow">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
</div>
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述