Да, это нормальное поведение.Он разделит элементы или содержимое по указанному значению в column-count
, а затем отобразит его в columns
.Если вы используете ul
, ol
, div
или какие-либо элементы, отличные от text
, они будут размещены вертикально, что может быть нежелательным результатом, но для text
это абсолютно логично.см. документы: https://drafts.csswg.org/css-multicol-1/#cc
Если вы хотите разделить свои внутренние элементы на столбцы и разделить их по горизонтали, вы можете использовать flexbox
, см. подход ниже:
.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%;
}
<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>
РЕДАКТИРОВАНИЕ:
Согласно редактированию ответа, вы установили height: 50px;
в .redbox
иэто ограничение элемента, чтобы заполнить высоту.Установите значение min-height: 50px;
.redBox {
min-height: 50px;
...
}
.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;
}
<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>