Flexbox:居中的元素,两侧各有一个空格元素

Mar*_*ura 17 css css3 flexbox

我正在使用flexbox设置一个由七个<li>不同宽度的元素组成的菜单.我希望我的中间(源顺序中的第4个)<li>元素始终水平居中作为一种锚点,其中1-3个<li>元素占据居中左侧的空间,<li>而第5个元素占据空间的空间对.

在此输入图像描述

我试过space-around,space-between在父Flex容器以及我试图居中align-self: center<li>元素上,但到目前为止没有运气.任何知识渊博的人的帮助将不胜感激.

的jsfiddle

G-C*_*Cyr 20

您需要修改您的nav结构并从左侧,中间右侧的 3个容器开始.DEMO


HTML

将举行几个环节,中心是一个链接.

<nav>
<span>
    <a href="#">aaa </a>
    <a href="#">aa </a>
    <a href="#">a </a>
    </span>
    <a href="#"> center </a>
    <span>
      <a href="#">bbbb </a>
      <a href="#">bbbbb </a>
      <a href="#">bbbbbb </a>
    </span>
</nav>
Run Code Online (Sandbox Code Playgroud)

CSS

净资产值将取display:flexjustify-content:space-between,所以会留下.

nav, nav span {
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;/* so they do not overlap each other if space too short */
}
Run Code Online (Sandbox Code Playgroud)

以产生边缘的缝隙向中心,我们只需添加一个伪元素(或空元素).

span:first-of-type:after,
span:last-of-type:before{
    content:'';
    display:inline-block;/* enough , no width needed , it will still generate a space between */
}
Run Code Online (Sandbox Code Playgroud)

可以采取flex1,以避免中心扩大太多.

nav > span {
    flex:2; /* 2 is minimum but plenty enough here  */
}
Run Code Online (Sandbox Code Playgroud)

让我们绘制链接框:

a {
    padding:0 0.25em;
    border:solid;
}
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 诀窍是在左右块上设置“ flex:2;”。谢谢! (2认同)