Keep one element centered between two elements of different widths in flexbox

前端 未结 1 642
北荒
北荒 2020-12-16 18:52

I am making a music playback controller, and the container has 3 sections: left, center, and right. However, since the left and right sides have different widths, the center

相关标签:
1条回答
  • 2020-12-16 19:16

    You can use margins to approximate centering. But in order to get perfect centering with flexbox that's consistent across a variety of viewports, you'll have to slightly modify your HTML somewhat.

    You need to turn the direct children of #container into flex containers themselves with a display:inline-flex declaration and give them a flex value of 1 and justify-content: center.

    From there, you add your content into child divs. To get alignment on the left and right divs, use margin-right: auto and margin-left: auto, respectively.

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

    0 讨论(0)
提交回复
热议问题