弹性盒子。将行中的一个对象放在中心(不知道其他对象的大小)

Flexbox. Putting one object from row in center (without knowing the size of other objects)

我在处理一个网站的页眉,但我遇到了 flexbox 问题。无论项目 1 或 3 中有什么项目,我都想将徽标(项目 2)放在完美的中心。我希望项目 1 始终位于左侧,对象 3 始终位于右侧。另外,如果考虑第二个框中的对象是 SVG 图形。

CSS:

header {
    display: flex;
    justify-content: space-between
}
.item {

}
.item2 {

}
.item3 {

}

HTML:

<header>
    <div class="item">
        Menu1 Menu2 Menu3 Menu4
    </div>

    <div class="item2">
        logo
    </div>

    <div class="item3">
        PL/ENG
    </div>
</header>

如果有人能帮我解决这个问题就太好了。

编辑:我稍微更改了代码以正确表示我正在努力解决的问题。

这可以通过多种方式完成,通过添加背景颜色,您会发现它们的行为有些不同。

你可以给最外面的东西flex: 1(我也去掉了justify-content: space-between

header {
    display: flex;
}
.item {
  flex: 1;
}
.item2 {

}
.item3 {
  flex: 1;
  text-align: right;
}
header > div {
  background: lightgray;
  border: 2px dotted red;
}
header > .item2 {
  background: lightblue;
}
<header>
    <div class="item">
        Menu1 Menu2 Menu3 Menu4
    </div>

    <div class="item2">
        logo
    </div>

    <div class="item3">
        PL/ENG
    </div>
</header>


另一种选择是对中间项使用绝对定位,

header {
  position: relative;
  display: flex;
}
.item {
  flex: 1;
}
.item2 {
  position: absolute;
  left: 50%;
  transform: translate(-50%);
}
.item3 {
  flex: 1;
  text-align: right;
}
header > div {
  background: lightgray;
  border: 2px dotted red;
}
header > .item2 {
  background: lightblue;
}
<header>
    <div class="item">
        Menu1 Menu2 Menu3 Menu4
    </div>

    <div class="item2">
        logo
    </div>

    <div class="item3">
        PL/ENG
    </div>
</header>

此处结合自动保证金。

header {
  position: relative;
  display: flex;
}
.item {
  margin-right: auto;
}
.item2 {
  position: absolute;
  left: 50%;
  transform: translate(-50%);
}
.item3 {
  margin-left: auto;
}
header > div {
  background: lightgray;
  border: 2px dotted red;
}
header > .item2 {
  background: lightblue;
}
<header>
    <div class="item">
        Menu1 Menu2 Menu3 Menu4
    </div>

    <div class="item2">
        logo
    </div>

    <div class="item3">
        PL/ENG
    </div>
</header>