首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列计数3不会留下包含1个项目的行

列计数3不会留下包含1个项目的行
EN

Stack Overflow用户
提问于 2019-02-26 08:45:28
回答 2查看 102关注 0票数 0

我注意到,当我在代码中使用column-count: 3时,我有7个条目。前两列各有3个元素,第三列只有一个元素(例如,见图片)。

这是column-count的正常行为,还是column-count应该均匀填充所有列?

更新-

我尝试修改caiovisk答案,并将代码从li元素更改为div,因为这就是我正在使用的。

这似乎很有效,但在我的情况下,有时元素可能会比其他元素更大,从而导致差距(见下图)。如何使用flex方法解决此问题?

代码语言:javascript
复制
.columns-3 {
		flex-basis: calc(33.33% - 20px);
		margin: 10px;
	}
	.redBox {
		height: 50px;
		background-color: red;
	}
	.bigger {
		height: 150px;
	}
代码语言:javascript
复制
<div class="columns">
		<div class="columns-3 redBox bigger"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox bigger"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox bigger"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
		<div class="columns-3 redBox"></div>
	</div>

EN

回答 2

Stack Overflow用户

发布于 2019-02-26 08:57:55

检查(我假设) li元素上是否有position:relative;

票数 0
EN

Stack Overflow用户

发布于 2019-02-26 09:13:46

是的,这是正常的行为。它将在column-count上用指定的值分隔元素或内容,然后在columns中显示它。如果你使用的是uloldiv或者任何不是text的元素,它会垂直放置它们,这可能不是你想要的结果,但是对于text来说这是绝对有意义的。请参阅文档:https://drafts.csswg.org/css-multicol-1/#cc

如果您想要将内部元素划分为列并水平划分,您可以使用flexbox,请参阅下面的方法:

代码语言:javascript
复制
.columns{
    display: flex;
    flex-wrap: wrap;
}
.columns-2 li {
    flex-basis: 50%;
}
.columns-3 li {
    flex-basis: 33.3334%;
}
.columns-4 li {
    flex-basis: 25%;
}
代码语言:javascript
复制
<h1>2 Columns</h1>
<ul class="columns columns-2">
<li>Column 1</li>
<li>Column 2</li>
<li>Column 3</li>
<li>Column 4</li>
<li>Column 5</li>
<li>Column 6</li>
<li>Column 7</li>
</ul>
<h1>3 Columns</h1>
<ul class="columns columns-3">
<li>Column 1</li>
<li>Column 2</li>
<li>Column 3</li>
<li>Column 4</li>
<li>Column 5</li>
<li>Column 6</li>
<li>Column 7</li>
</ul>
<h1>4 Columns</h1>
<ul class="columns columns-4">
<li>Column 1</li>
<li>Column 2</li>
<li>Column 3</li>
<li>Column 4</li>
<li>Column 5</li>
<li>Column 6</li>
<li>Column 7</li>
</ul>

编辑:

根据答案edit,您已经将height: 50px;设置为您的.redbox,并且它限制元素填充高度。将其设置为min-height: 50px;

代码语言:javascript
复制
.redBox {
        min-height: 50px;
        ...
}

代码语言:javascript
复制
.columns {
		display: flex;
    flex-flow: wrap;
}
.columns.columns-3 > div {
    flex-basis: calc(33.33% - 20px);
    margin: 10px;
}
.columns.redBox > div {
    min-height: 50px;
    background-color: red;
}
.bigger {
    height: 150px;
}
代码语言:javascript
复制
<div class="columns columns-3 redBox">
  <div class="bigger"></div>
  <div></div>
  <div></div>
  <div></div>
  <div class="bigger"></div>
  <div></div>
  <div></div>
  <div></div>
  <div class="bigger"></div>
  <div></div>
</div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54876919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档