我正在使用flexbox对齐我的子元素。我想做的是将一个元素居中,而另一个保持最左对齐。通常我会使用来设置left元素margin-right:auto
。问题是将中心元素推离中心。这是可能的 ,而不 使用绝对定位?
HTML和CSS
#parent {
align-items: center;
border: 1px solid black;
display: flex;
justify-content: center;
margin: 0 auto;
width: 500px;
}
#left {
margin-right: auto;
}
#center {
margin: auto;
}
<div id="parent">
<span id="left">Left</span>
<span id="center">Center</span>
</div>
编辑:
请参阅下面的[Solo答案,这是更好的解决方案。
flexbox背后的想法是提供一个框架,可以轻松地将容器中尺寸可变的元素对齐。这样,提供一个布局而完全忽略一个元素的宽度几乎没有意义。本质上,这正是绝对定位的目的,因为它使元素脱离了正常流动。
据我所知,如果不使用position: absolute;
,就没有很好的方法,所以我建议您使用它…但是,如果您真的不想或不能使用绝对定位,那么我想您可以使用一个以下变通办法。
如果您知道“ Left” div的确切宽度 ,则可以更改justify-content
为flex-start
(left),然后像这样对齐“
Center” div:
#center {
position: relative;
margin: auto;
left: -{half width of left div}px;
}
如果您不知道width ,那么可以在右侧复制“ Left”,使用justify-content: space-between;
,并隐藏新的right元素: 明确一点,这确实非常丑陋……最好使用绝对定位而不是重复的内容。 :-)
#parent {
align-items: center;
border: 1px solid black;
display: flex;
justify-content: space-between;
margin: 0 auto;
width: 500px;
}
#right {
opacity: 0;
}
<div id="parent">
<span id="left">Left</span>
<span id="center">Center</span>
<span id="right">Left</span>
</div>
问题内容: 使用典型的CSS,我可以在两列之间向左浮动另一列,并在两者之间留出一定的间距。我该如何使用flexbox? 问题答案: 您可以添加到父元素。这样做时,子级flexbox项将与相对侧对齐,并在它们之间留有空间。 您也可以添加到第二个元素以使其向右对齐。
我想在中间对齐和。 如何使完全向右移动? 以前: 之后: https://jsfiddle.net/z44p7bsx/
问题内容: 我想有A B和C中间对齐。 我如何才能D完全右移? 问题答案: 以下是实现此布局的五个选项: CSS定位 带有不可见DOM元素的Flexbox 带有不可见伪元素的Flexbox Flexbox与 flex: 1 CSS网格布局 方法1:CSS定位属性 应用于容器。 应用于项目D。 现在,此项目已完全放置在flex容器中。 更具体地说,项目D从文档流中删除,但停留在最接近的祖先的范围内。
我有一个Flexbox。它的内容是NxN个正方形。我想要容器适合尽可能多的这些方块给定的显示宽度。我想让flexbox在页面中对齐。 然而问题是当我使用 则最后一行不向左对齐。但是,如果我更改为 则整个容器在页面上不再以中心对齐的方式显示。我能以某种方式实现两个的混合吗,所以就是这个例子,我将对齐5个项目,但最后一行将对齐前几行中的第一个项目? 最小再现:
我与一些孩子有: 我想要以下布局: 无论中有多少文本,我都希望将始终贴在底部,而不将其从流中取出。我听说Flexbox可以实现这一点,但我不能让它工作。
如何将弹性项向右对齐? 它的输出类似于 我正在寻找