CSS Flexbox - 相对于父元素居中所有具有全高的子元素[重复]

Posted

技术标签:

【中文标题】CSS Flexbox - 相对于父元素居中所有具有全高的子元素[重复]【英文标题】:CSS Flexbox - Center all child elements with full height relative to the parent element [duplicate] 【发布时间】:2019-10-21 06:48:59 【问题描述】:

我需要将所有子元素与父元素的全高对齐。

一切都很好,直到我使用 align-items: center; 属性,我对齐元素但它没有覆盖 100%,如果我使用 align-self:stretch; 覆盖 100% 但不垂直对齐元素,对此有一些解决方案。

.abouts 
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flex;
  display: -o-flex;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  align-self: stretch;


.abouts .item 
  flex: 1;
  margin: 5px;
  padding: 15px;
  background-color: rgba(0,0,0,0.1);
<div class="abouts">
  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details, more content height...</p>
  </div>
  <!--/ ITEM -->
  
  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details...</p>
  </div>
  <!--/ ITEM -->
  
  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details, more content for test equal height all elements more content for test equal height all elements...</p>
  </div>
  <!--/ ITEM -->
</div>

【问题讨论】:

问题的解释和各种解决方案在副本中提供。 【参考方案1】:

.abouts flex 父级使用align-items: stretch 使.item 子级具有父级的高度。然后(你可以)让.item 孩子自己变成弹性父母。然后,您必须调整文本边距 (because there is no margin collapse in flex formatting)

.abouts .item 
  flex: 1;
  margin: 5px;
  padding: 15px;
  background-color: rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  justify-content: center;

.abouts 
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flex;
  display: -o-flex;
  display: flex;
  justify-content: center;
  align-items: stretch;
  text-align: center;
  align-self: stretch;


.abouts .item 
  flex: 1;
  margin: 5px;
  padding: 15px;
  background-color: rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  justify-content: center;
<div class="abouts">
  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details, more content height...</p>
  </div>
  <!--/ ITEM -->

  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details...</p>
  </div>
  <!--/ ITEM -->

  <!-- ITEM -->
  <div class="item">
    <h3>Vision</h3>
    <p>Content here details, more content for test equal height all elements more content for test equal height all elements...</p>
  </div>
  <!--/ ITEM -->
</div>

【讨论】:

没问题。我对 flex 模型的大部分理解来自 css-tricks.com/snippets/css/a-guide-to-flexbox……它是对所有属性的非常好的分解。

以上是关于CSS Flexbox - 相对于父元素居中所有具有全高的子元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过CSS使得子控件相对于父控件居中

Css实现元素上下左右都居中的4种方法

在css中 父元素不固定高度,怎样实现子元素的高度100

关于css的行内元素的居中问题??

在css中 父元素不固定高度,怎样实现子元素的高度100

使用css Flexbox实现垂直居中