Однако я знаю, что когда элемент имеет свойство display: block, это означает, что элемент начинает новую строку.
Ваша информация неверна, поскольку только свойство display никогда не сообщает нам, будет ли у нас новая строка или нет.
Давайте рассмотрим другой пример без flexbox:
.box {
width:200px;
height:200px;
border:2px solid;
float:left;
}
<div class="box">
</div>
<div class="box">
</div>
Вы можете четко заметить, что элементы имеют вычисленное значение display
, равное блоку, но они не начинаются на новой строке из-за поплавкасвойство. То же самое происходит с flexbox, сеткой CSS, position: absolute и многими другими комбинациями свойств.
Все это определено в спецификации.
Для элементов с плавающей точкой: https://www.w3.org/TR/CSS21/visuren.html#floats
Если текущее поле является плавающим слева, и есть какие-либо оставленные слева поля, созданные элементами ранее в исходном документе, то для каждого такого более раннего поля либо левый внешний край текущего поля должен бытьсправа от правого внешнего края более ранней рамки или ее верха должна быть ниже, чем нижняя часть более ранней рамки. Аналогичные правила действительны для правосторонних блоков.
Для flexbox: https://www.w3.org/TR/css-flexbox-1/
Отображаемое значение элемента Flex - blockified :. ..
Свойство flex-direction указывает, как элементы flex помещаются в гибкий контейнер , путем задания направления главной оси гибкого контейнера. Это определяет направление, в котором располагаются гибкие элементы.
Направление по умолчанию: row
Вам просто нужно найти часть спецификации, касающуюсясвойства, которые вы используете, чтобы найти, как ваши элементы будут размещены в документе, и вы четко увидите, что одного display
недостаточно для определения этого.