Flex:并排放置两个项目,没有最大宽度

时间:2018-02-20 11:31:06

标签: html css css3 flexbox alignment

我不知道这是否可以使用flex,但我需要的是一个包含两个项目的列表,每个项目的宽度取决于内容。像这里:

<div class="items">
  <div class="item">Item 1 with text</div>
  <div class="item">Item 2 with more text</div>
  <div class="item">Item 3 with some text</div>
  <div class="item">Item 4 without text</div>
  <div class="item">Item 5 lorem</div>
  <div class="item">Item 6 ipsum</div>
  <div class="item">Item 7 with lorem</div>
  <div class="item">Item 8 with ipsum</div>
</div>

.items {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
}

.item {
  align-self: flex-end;
  box-sizing: border-box;
  background: #e0ddd5;
  color: #171e42;
  padding: 10px;
}

.item:nth-child(even) {
  background-color: darkgrey;
}

我怎么能意识到,无论我有多少项目,总有两件并排?没有外部容器限制宽度。我不想使用浮动。网格模板列是否有灵活的解决方案?

这样的最终结果(但与右边对齐):

enter image description here

3 个答案:

答案 0 :(得分:1)

如果禁止float,我确实有一个简单的解决方案! :)
我们将使用inlineblock:nth-child::after

我们走了:

.item {
  display: inline;
}

.item:nth-child(2n)::after {
  display: block;
  content: '';
}
<div class="items">
  <div class="item">Item 1 with text</div>
  <div class="item">Item 2 with more text</div>
  <div class="item">Item 3 with some text</div>
  <div class="item">Item 4 without text</div>
  <div class="item">Item 5 lorem</div>
  <div class="item">Item 6 ipsum</div>
  <div class="item">Item 7 with lorem</div>
  <div class="item">Item 8 with ipsum</div>
</div>

简单,不是吗?

答案 1 :(得分:1)

除了theAlexandrian's回答之外,如果您可以添加内部包装,这里有一个选项,您可以使用内部div(显示为inline-block)进行样式设置,例如填充等。

由于我们处理内联元素,因此它们(如字符)可以在它们之间留有空格。一种方法是使用负边距将其取出,以下是一些选项:

请注意,由于空格宽度基于字体,因此负边距可能需要调整。

Stack snippet

&#13;
&#13;
.items {
  text-align: right;
}

.item {
  display: inline;
  margin-right: -4px;        /*  take out inline element space  */
}

.item div {
  display: inline-block;
  background: #e0ddd5;
  color: #171e42;
  padding: 10px;
}

.item:nth-child(even) div {
  background-color: darkgrey;
}

.item:nth-child(even)::after {
  content: '\A';
  white-space: pre;
}
&#13;
<div class="items">
  <div class="item"><div> Item 1 with text </div></div>
  <div class="item"><div> Item 2 with more text </div></div>
  <div class="item"><div> Item 3 with some text </div></div>
  <div class="item"><div> Item 4 without text </div></div>
  <div class="item"><div> Item 5 lorem </div></div>
  <div class="item"><div> Item 6 ipsum </div></div>
  <div class="item"><div> Item 7 with lorem </div></div>
  <div class="item"><div> Item 8 with ipsum </div></div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

您是否尝试过css列?

Assertion error: false
Assertion failure: true
Assertion failure message: The code is: No_Default - meta is: {"code":"000"}
.items {
  columns: 2
}