css - Flexbox:居中元素,两侧有空格元素

标签 css flexbox

我正在使用 flexbox 设置一个由七个菜单组成的菜单 <li>具有各种宽度的元素。我想要我的中间(源顺序中的第 4 个)<li>元素始终水平居中作为一种 anchor ,第 1-3 个 <li>占据居中左侧空间的元素 <li>第 5-7 个占据右边的空间。

enter image description here

我试过了 space-around , space-between在父 flex 容器上以及 align-self: center<li> 上我试图居中的元素,但到目前为止还没有运气。任何熟悉 flexbox 的人的帮助将不胜感激。

jsfiddle

最佳答案

您需要修改您的 nav 结构并从 leftcenterright 三个容器开始。 <强> DEMO


HTML

leftright 将容纳几个链接,center 是一个链接。

<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>

CSS

nav 将占用 display:flexjustify-content:space-betweenleftright

nav, nav span {
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;/* so they do not overlap each other if space too short */
}

要在 的边缘向中心生成间隙,我们只需添加一个伪元素(或空元素)

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 */
}

leftright 可以采用 flexhigher 1 ,避免 center 扩展太多。

nav > span {
    flex:2; /* 2 is minimum but plenty enough here  */
}

让我们绘制我们的链接框:

a {
    padding:0 0.25em;
    border:solid;
}

DEMO

关于css - Flexbox:居中元素,两侧有空格元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974428/

相关文章:

html - 分色超链接

css - 字形在悬停时改变颜色以及文本链接

html - 响应地将 2 列布局折叠为单列

flexbox - 当容器变成弹性容器 gatsby 时,图像消失

javascript - 使两个文本区域并排共享一个灵活的边框

css - Gentelella 在启动时设置 nav-sm

javascript - 动态 CSS - 多个样式表与单个动态 CSS(渲染性能)

html - 在网格元素内垂直对齐中心和底部

html - 我怎样才能让我的 Bootstrap flex 子元素具有相同的高度?

HTML 元素在绝对定位和内部 flexbox 中未占用其全宽