在我的代码中,第一个示例工作正常。第二个元素将第二个元素推送到新行。
为什么呢?以及如何避免它?
.one {
background-color: cornflowerblue;
width: 50%;
}
.one,
.two {
height: 100%;
font-size: 30px;
}
.two {
width: 50%;
background-color: salmon;
}
.ib {
display: inline-block;
}
.container {
font-size: 0;
height: 200px;
}
.fb {
display: flex;
}

<div class="container">
<div class="one ib">one</div>
<div class="two ib">two</div>
</div>
<div class="container">
<div class="one fb">one</div>
<div class="two ib">two</div>
</div>
&#13;
答案 0 :(得分:5)
您有三个div,其display
值设置为inline-block
。这些div中的每一个都有一个类ib
。
你有一个display: flex
的div。这个div有一个类fb
。
将display: flex
应用于元素时,它将成为块级容器。作为块级元素,它占用行中的所有可用空间,将任何后续元素推送到下一行。
解决此问题的方法是使用display: inline-flex
代替display: flex
。
来自规范:
3. Flex Containers: the
flex
andinline-flex
display values<强>
flex
强>此值使元素生成块级Flex容器 框。
<强>
inline-flex
强>此值使元素生成内联级flex 容器盒。
答案 1 :(得分:2)
.fb{
display: inline-flex;
}
如果您使用上述代码,您可以轻松地看到差异。
内联元素不会在新行上开始,只占用所需的宽度。
但是flex将从一条新线开始。
答案 2 :(得分:0)
flex
实际上是您在容器/父级别应用和启用的属性。从你的例子中不清楚你期望你的孩子(一个和两个)做什么?
请参阅此更新后的笔,其中我已从子项中删除了ib
和fb
类,并将fb
应用于第二个container
父级:http://codepen.io/angeliquejw/pen/qZRoLz?editors=1100
此外,CSS-Tricks有一个工厂细分,有助于理解flexbox的基础知识:https://css-tricks.com/snippets/css/a-guide-to-flexbox/
更新以反映以下回复:flex
,您最初使用的行为更像block
(请参阅文档:https://developer.mozilla.org/en-US/docs/Web/CSS/display)。您想使用display:inline-flex
:http://codepen.io/angeliquejw/pen/jqyxNz?editors=1100