【问题标题】:Keep one element centered between two elements of different widths in flexbox让一个元素居中于 flexbox 中两个不同宽度的元素之间
【发布时间】:2016-09-29 20:16:04
【问题描述】:

我正在制作一个音乐播放控制器,容器有 3 个部分:左、中、右。但是,由于左右两侧的宽度不同,中心部分不在 div 的真正中心,但我需要它。我正在使用 flexbox 的 space-between 选项来布局项目。

#container {
    display: flex;
    justify-content: space-between;
    background-color: lightgrey;
}

#container > div {
  height: 100px;
  border: 2px dashed red;
  
  /*This is only for looks*/
  text-align: center;
  padding: 5px;
}
<div id="container">
  <div>Left Side</div>
  <div>I want this centered</div>
  <div>Right Side (Extra text for extra length)</div>
</div>

【问题讨论】:

标签: html css flexbox


【解决方案1】:

您可以使用边距来近似居中。但是为了在各种视口中保持一致的 flexbox 完美居中,您必须稍微修改一下 HTML。

您需要使用display:inline-flex 声明将#container 的直接子级本身转换为弹性容器,并为它们提供flex1justify-content: center

从那里,您将内容添加到子 div 中。要对齐左右 div,请分别使用 margin-right: automargin-left: auto

#container {
  display: flex;
  background-color: lightgrey;
}
.flex {
  flex: 1;
  display: inline-flex;
  justify-content: center;
}
.flex > div {
  height: 100px;
  border: 2px dashed red;
  text-align: center;
  padding: 5px;
}
.left div {
  margin-right: auto;
}
.right div {
  margin-left: auto;
}
<div id="container">
  <div class="left flex">
    <div>Left Side</div>
  </div>
  <div class="center flex">
    <div>I want this centered</div>
  </div>
  <div class="right flex">
    <div>Right Side (Extra text for extra length)</div>
  </div>
</div>

【讨论】:

  • 附注:因为主容器是nowrap,所以弹性项目可以是display: inline-flexdisplay: flex。无论哪种方式,这些项目都保持在一行中。
  • @litel 如何扩展它,以便左右会得到省略号,但标题会尽可能扩大,然后也会得到省略号?
猜你喜欢
  • 2016-11-23
  • 2016-05-04
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 2012-07-16
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多