我不知道这是否可以使用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;
}
我怎么能意识到,无论我有多少项目,总有两件并排?没有外部容器限制宽度。我不想使用浮动。网格模板列是否有灵活的解决方案?
这样的最终结果(但与右边对齐):
答案 0 :(得分:1)
如果禁止float
,我确实有一个简单的解决方案! :)
我们将使用inline
,block
,: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
.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;
答案 2 :(得分:-1)
您是否尝试过css列?
Assertion error: false
Assertion failure: true
Assertion failure message: The code is: No_Default - meta is: {"code":"000"}
.items {
columns: 2
}