显然,你只能在flex项容器中包含块元素(内联,内联块,浮动无效)?这很奇怪,除非我完全错了,否则看起来并没有用?
以下是笔:http://codepen.io/iaezzy/pen/GggVxe
.fill-height-or-more {
min-height: 100%;
display: flex;
flex-direction: column;
}
.fill-height-or-more > div {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
}
您可能需要增加预览窗格高度才能使Flexbox正常工作。
为了清晰起见编辑:我不是在谈论弹性项目本身,而是在弹性项目中的元素。在上面的codepen中,您会看到h2
和p
有边框,他们有float
声明,但不要浮动。
答案 0 :(得分:13)
您已在display: flex
和section
上设置了div
。
如果section
充当容器,则将display: flex
提供给section
,并将div
保留为flex-items。然后p
和h1
将浮动。
小提琴:http://jsfiddle.net/abhitalks/zb12n2dk/
.fill-height-or-more {
display: flex;
flex-direction: column;
...
}
.fill-height-or-more > div {
flex: 1;
...
}
.some-area > div p {
width: 40%;
float: left;
...
}
答案 1 :(得分:8)
Flex项目始终呈现为块,因为flex布局仅在块状布局中有意义。灵活项目和块级别框之间存在一些差异,这些差异在规范的3和4部分中介绍,其中一个是灵活项目也不能浮动,这也是因为这会破坏弹性布局(相反,外部漂浮物也不能侵入柔性布局)。
你可以将display
的不同值应用于弹性项目(并将其与display: none
一起隐藏),但这只会产生建立各种格式上下文的效果Flex项目的 children ,而不是项目本身。
这包括display: flex
,正如您所展示的那样;然后会发生的是,flex项目成为自己子项的flex容器,这使得这些子项在嵌套的flex格式化上下文中展示项目。因此,漂浮这些孩子是行不通的。
请注意,为了建立Flex布局,您只需要在Flex容器上设置display: flex
,而不是其子容器。非display: none
的Flex容器的所有子项将自动成为弹性项目。
答案 2 :(得分:1)
用于替换flex内部的内联元素,有另一种解决方案可以使用display: inline-table
但是它似乎不支持浮动,但你可以通过用anther div或其他东西包装它来实现这个目的
检查以下jsfiddle https://jsfiddle.net/reda84/eesuxLgu/
.row{
width:100%;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row > .col {
display: flex;
box-sizing: border-box;
width:50%;
float:left;
flex-direction: column;
border:1px solid #333;
min-height:100px;
padding:15px
}
.tag{
background: #1b8fe7;
color:#fff;
padding:5px 10px;
display: inline-table;
margin:0px 5px 5px 0;
}
答案 3 :(得分:0)
对于试图在 flex 容器内显示内联元素并找到此页面的人,您只需要将您的内容在 flex 元素中包装上一层。
示例:
不是
<label style="display:flex">
A block label from a form <br>
<i>This idiomatic element is a block box and not its inline default</span>
</label>
但是
<div style="display:flex">
<label>
A block label from a form <br>
<i>This idiomatic is an inline box and does not become a block</i>
</label>
</div>