我试图使用弹性框将不同大小的div的行堆叠在一起,以便填充空白区域。
如果您运行以下代码,我试图让第5和第6行进入上面的空白区域。
有关如何实现这一目标的任何想法?
提前致谢, 亚历
.flex-container {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
}
.flex-item {
width: 30%;
border: 1px solid;
margin: 10px auto;
}

<html>
<head>
<title>testing flex box</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<div class="flex-container">
<div class="flex-item">
<ul>
<li>1</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>2</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>3</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>4</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>5</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>6</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>7</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
</div>
</body>
</html>
&#13;
答案 0 :(得分:0)
您在CSS中寻找的最接近的内容是列CSS:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Columns/Using_multi-column_layouts
例如
.flex-container {
column-count: 3;
column-fill: balance;
}
.flex-item {
display: inline-block;/* avoid to break through columns */
width: 100%;
border: 1px solid;
margin: 10px auto;
}
<html>
<head>
<title>testing flex box</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<div class="flex-container">
<div class="flex-item">
<ul>
<li>1</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>2</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>3</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>4</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>5</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>6</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="flex-item">
<ul>
<li>7</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
</div>
</body>
</html>
flex无法执行此操作
网格需要跨行遍历元素,您需要知道它们的大小以设置行的跨度。 以下示例,更改子项或内容的数量并查看其中断,将代码段悬停以查看其发生情况
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-gap: 0px;
}
.item {
border: solid;
margin: 10px;
}
.item:nth-child(1) {
grid-row: span 3;
}
.item:nth-child(2) {
grid-row: span 1;
}
.item:nth-child(3),
.item:nth-child(4),
.item:nth-child(5) {
grid-row: span 2;
}
/* break it */
html:hover .item {font-size:1.5em}
html:hover .item:nth-child(3n) {font-size:.75em;}
html:hover .item:nth-child(5) {display:none;}
<div class="container">
<div class="item">
<ul>
<li>1</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>2</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>3</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>4</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>5</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>6</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
<div class="item">
<ul>
<li>7</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
<li>content</li>
</ul>
</div>
</div>