我想做一个div
坚持在屏幕顶部没有任何影响其他元素,和它的子元素在中心.
.parent {
display: flex;
justify-content: center;
position: absolute;
}
<div class="parent">
<div class="child">text</div>
</div>
当我添加position: absolute
行时,justify-content: center
将无效。他们之间是否有冲突,解决方案是什么?
编辑
谢谢大家,这是父母宽度的问题。但是我在React Native,所以我不能设置width: 100%
。已尝试flex: 1
和align-self: stretch
,两者都不工作。我最终使用Dimensions来获得窗口的全宽,它工作了。
编辑
在React Native的新版本(我使用0.49)中,它接受width: 100%
。
4条答案
按热度按时间r55awzrz1#
不,绝对定位与Flex容器并不冲突。使元素成为Flex容器只会影响其内部布局模型,即其内容的布局方式。定位会影响图元本身,并且可以改变其在流布局中的外部角色。
这意味着
display: inline-flex
给一个元素添加绝对定位,它会变成块级的(像display: flex
一样),但仍然会生成一个flex上下文。display: flex
的元素,则将使用收缩拟合算法(典型的内联级容器)而不是填充可用算法来调整该元素的大小。也就是说,绝对的定位与灵活的孩子冲突。
因为它是out-of-flow,所以flex容器的绝对定位子容器不参与flex布局。
vecaoik12#
您忘记指定
.parent
的宽度。ar7v8xwq3#
你必须给予
width:100%
父center
的文本。如果还需要垂直居中对齐,请给予
height:100%
和align-itens: center
mgdq6dx14#
在我的例子中,问题是我在div的中心有另一个元素,其中有一个冲突的z索引。