html - 使用 flexbox 将元素左对齐和居中对齐

标签 html css flexbox

我正在使用 flexbox 来对齐我的子元素。我想做的是将一个元素居中,让另一个元素与最左边对齐。通常我会使用 margin-right: auto 设置左边的元素。问题是将中心元素推离中心。这可能使用绝对定位吗?

HTML 和 CSS

#parent {
  align-items: center;
  border: 1px solid black;
  display: flex;
  justify-content: center;
  margin: 0 auto;
  width: 500px;
}
#left {
  margin-right: auto;
}
#center {
  margin: auto;
}
<div id="parent">
  <span id="left">Left</span>
  <span id="center">Center</span>
</div>

最佳答案

添加第三个空元素:

<div class="parent">
  <div class="left">Left</div>
  <div class="center">Center</div>
  <div class="right"></div>
</div>

以及以下样式:

.parent {
  display: flex;
}
.left, .right {
  flex: 1;
}

只有左手和右手会成长,这要归功于......

  • 只有两个增长元素(如果为空则无所谓)和
  • 两者的宽度相同(它们会平均分配可用空间)

...中心元素将始终完美居中。

在我看来,这比公认的答案要好得多,因为您不必将左侧内容复制到右侧并隐藏它以获得两侧相同的宽度,它只是神奇地发生了(flexbox 是神奇的).


在行动中:

.parent {
  display: flex;
}

.left,
.right {
  flex: 1;
}


/* Styles for demonstration */
.parent {
  padding: 5px;
  border: 2px solid #000;
}
.left,
.right {
  padding: 3px;
  border: 2px solid red;
}
.center {
  margin: 0 3px;
  padding: 3px;
  border: 2px solid blue;
}
<div class="parent">
  <div class="left">Left</div>
  <div class="center">Center</div>
  <div class="right"></div>
</div>

关于html - 使用 flexbox 将元素左对齐和居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167812/

相关文章:

javascript - 停止在表单字段中输入字符

HTML div : Vertical alignment will not stick

javascript - 无法使功能自动刷新

php - Apache 返回没有样式的页面,只有文本和图像

javascript - 每次单击后,jQuery 仅在下一个列表项之前添加,而不是一次添加所有列表项

html - 如何将子文本置于 Flexbox 框的左边缘中心?

Html/CSS : How to make a table stick to bottom of container, 同时让容器保持可滚动?

css - 我的自定义 FontFace 不适用于博主

html - 如何将页脚保持在底部,直到内容充满主体高度?

html - 如何使用 CSS flexbox 创建此布局?