css - flexbox 可以用于列表中的 "pack"项吗?

标签 css flexbox

使用 flexbox 并基于以下标记,是否有可能使列表中的最后一项在视觉上向上移动并将其自身“打包”到可用空间中?

我知道这可以通过不同的标记(3 列和每列中的元素)来完成,使用 float 或 flexbox,但我很好奇 flexbox 是否可以使用此标记来完成。

html,
body {
	height: 100%;
}

html {
	box-sizing: border-box;
}

*,
*:before,
*:after {
	box-sizing: inherit;
}

ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.layout {
	background-color: yellow;
	display: flex;
	flex-flow: row wrap;
	align-items: flex-start;
}

.layout__item {
	background-color: red;
	width: 33.33%;
	padding-right: 15px;
}

/* Every 3rd item. */
.layout__item:nth-child(3n) {
	padding-right: 0;
}

/* Every item after the first 3. */
.layout__item:nth-child(n+4) {
	padding-top: 15px;
}

.layout__item-content {
	background-color: green;
	height: 100%;
}

.layout__item-img {
	background-color: blue;
	height: 100%;
}
<ul class="layout">
	<li class="layout__item">
		<div class="layout__item-content">
			<div class="layout__item-img" style="height:300px"></div>
			<div class="layout__item-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio quos voluptates impedit optio id, fugit, nobis assumenda eveniet, veniam deserunt eum magni. Voluptates quam, deserunt sit pariatur ducimus omnis eligendi!</div>
		</div>
	</li>
	<li class="layout__item">
		<div class="layout__item-content">
			<div class="layout__item-img" style="height:100px"></div>
			<div class="layout__item-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores, saepe!</div>
		</div>
	</li>
	<li class="layout__item">
		<div class="layout__item-content">
			<div class="layout__item-img" style="height: 200px;"></div>
			<div class="layout__item-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officia placeat quidem, illum cumque nisi repellat excepturi iusto aperiam tempore quam.</div>
		</div>
	</li>
	<li class="layout__item">
		<div class="layout__item-content">
			<div class="layout__item-img" style="height:150px;"></div>
			<div class="layout__item-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas natus odio quae nam officia libero.</div>
		</div>
	</li>
	<li class="layout__item">
		<div class="layout__item-content">
			<div class="layout__item-img" style="height: 321px;"></div>
			<div class="layout__item-text">Lorem ipsum dolor sit amet.</div>
		</div>
	</li>
</ul>

最佳答案

这个问题的答案很简单,是否定的。

关于类似问题的原因有一个很好的解释:Horizontal masonry layout with flexbox CSS only

关于css - flexbox 可以用于列表中的 "pack"项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927220/

相关文章:

html - 使框的大小包装内容

html - 相对于父而不是浏览器的固定位置

html - 使用::selection 选择器更改所有子项的选择颜色

javascript - 使用现有 JavaScript 动画引用网站的一部分

css - 如何调整 CSS 单选按钮的大小并使文本保持在中间

javascript - jQuery 追加 css 删除反斜杠

html - 防止 flex 元素从一边到另一边渲染

html - 在 Flexbox 中居中不起作用。什么是高度、宽度、显示和位置要求?我错过了什么?

html - 等高 flex 行不起作用

html - 我怎样才能让这个布局像它应该的那样对齐?