【发布时间】:2016-10-01 07:06:15
【问题描述】:
我有几个 flex 行,我想设置外边距或填充,这样内容就不会到达屏幕边缘的 50px 以内。
我已经尝试了各种与width、min-width 和flex-basis 混淆的方法来使其正常工作。每次我得到一些接近正确的东西时,内容都会由于某种原因而未对齐,和/或一堆内容溢出视口。
当不使用 flex-box 时,这非常简单,只需在行上设置 margin: auto 50px;,但使用 flex-box 我似乎无法使其工作。
我使用的弹性设置是:
div {
position: absolute;
width: 100%;
display: flex;
justify-content: center;
flex-direction: row;
justify-content: space-between;
}
div:nth-of-type(1) {
top: 10%;
margin: 0;
}
div:nth-of-type(2) {
top: 20%;
margin: auto 50px;
}
<div>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
</div>
<div>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
</div>
在此示例中,我希望第二行的行为与第一行一样,一切都很好且居中对齐,但内容位于原始视口内,并在第二行的外部添加了 50px 的边距的简单更改行。
更新
现在还尝试在外部使用min-width 或flex-basis 在该行中添加两个“spacer”弹性项目,但这也不会产生预期的结果。
基本上,我希望所有内容都缩小而不是到达边界,与视口边缘保持一定宽度,然后在某个点分成两行。
【问题讨论】:
-
似乎我可以通过添加带有媒体查询的
flex: 0 0 50%来实现所需的行为......但这仍然不允许我很好地控制弹性行的外边距。很想知道如何以更直接的控制方式完成。 -
不是 flexbox 弄乱了边距。这是
position: absolute。当您从文档流中删除一个元素时,它并不关心周围的元素。它直接通过它们。你的弹性容器必须绝对定位吗? -
@Michael_B 嗯,这是有道理的......是的,这是一个多页应用程序中的全页屏幕,所以为了让它以我想要的方式响应,我使用顶部/底部和百分比基于媒体查询。通过摆弄各种收缩/增长/基础值,我已经得到了它的主要表现方式,但我仍然喜欢更严格的控制。我有什么建议可以离散地设置这种性质的东西吗?
标签: html css flexbox css-position