有一个 Flexbox 网格。
.flex {
display: flex;
flex-wrap: wrap;
border: 2px solid red;
}
.item {
width: 50px;
height: 50px;
margin: 5px;
border: 2px solid blue;
}
<div class="flex">
<div class="item"></div>
<div class="item"></div>
<div class="item new-string"></div>
</div>
如何换.new-string
行和它后面的元素一起换行?
对 enSO 的响应的翻译。
译者注:弹性元素(flex item)是带有 的块的直接子元素
display: flex
。最简单和最可靠的解决方案是在正确的位置插入弹性项目。如果它们足够宽 (
width: 100%
),它们将创建一个换行符。但它很丑陋而且不符合语义。相反,我们可以在 flex 容器内生成伪元素,并使用属性
order
将它们移动到正确的位置。但是有一个限制:一个 flex 容器只能有伪元素
::before
和::after
. 这意味着我们只能创建 2 个换行符。要解决这个问题,您可以在 flex 项目而不是 flex 容器中生成伪元素。这样你就不会被限制为两个。但是这些伪元素不会是弹性项目,所以它们不会创建换行符。
但幸运的是,引入了CSS Display L3
display: contents
规范(目前仅受 Firefox 37 支持):因此,您可以将
display: contents
flex 容器应用于子容器,并将每个容器的内容包装在一个额外的块中。所以弹性项目将是这些额外的包装器和子伪元素。此外,与Fragmenting Flex Layout和CSS Fragmentation
break-before
一致,flexbox 允许使用break-after
或它们在 CSS 2.1 中的别名进行强制换行:flexbox 中的强制换行尚未得到广泛支持,但它们在 Firefox 中有效。
flexbox
不幸的是,不强,但我记得这个技巧:通过添加 break 元素解决
也许尝试玩一个有边距的线程?
这应该足够了!
您可以在标记中插入一条水平线