【问题标题】:Flexbox wont vertically centre child elements of parentFlexbox 不会垂直居中父元素的子元素
【发布时间】:2020-07-08 06:13:37
【问题描述】:

我有一个父容器 div 和一些子元素,但是只有一个子元素垂直居中。我无法弄清楚我做错了什么。 instagramwrapper 是垂直对齐的,但包含其他两个子元素的包装器仍位于页面顶部。

html:

<div class="Container">
<div class="headerWrapper">
   <div> 
       <span>Information & Advice</span>
    </div>
    <div>
       <span>From the daylight experts</span> 
    </div>    
</div>
<div class="wrapper">
    <app-carousel></app-carousel>
    <app-guides></app-guides>
</div> 
<div class="instagramWrapper">
    <app-instagram></app-instagram>
</div>       

css:

  .Container {
    padding: 0;
    height: 100%;
    margin: 0;
    display: flex;
    align-self: center;
    align-items: center;
    justify-content: center;     
    flex-direction: row;
    width: 100%;
  }

  .wrapper {
    width: 780px;
    /* inherit parent width */
  }

  .instagramWrapper {
    width: 500px;
    padding-left: 10px;
    margin-left: 2px;
    /* inherit parent width */
  }

我的理解是“align-items”可以在 flex 容器当前行的横轴上对齐?

新结果^

【问题讨论】:

  • flex-direction: row 规则不是必需的,因为这是它的默认值;你能展示一下你当前的输出和你的期望吗?
  • 请您编辑您的问题并使用 sn-p 按钮创建一个minimal reproducible example 并进一步解释问题所在,因为您不知道您希望哪个 div 居中
  • 已更新图片

标签: html css angular flexbox


【解决方案1】:

您的容器可能有 100% 的高度。但是它的父级是否有 100% 的高度?

尝试以下方法:

html, body {
    height: 100%;
}

这将使文档的高度为视口的 100%,以便 .Container 获得文档的 100%。

并且您的两个内部元素(instafeed 和左侧的列)将根据它们的大小进行不同的定位。

【讨论】:

  • 啊该死的好发现
  • 通过这样做,它们现在都居中,但是它们的高度不同,所以看起来排列不正确,我该怎么做才能确保它们保持一致。上面附上新结果的图片
  • 我强烈推荐阅读css-tricks.com/snippets/css/a-guide-to-flexbox。尝试使用 align-items: baseline;您的物品有不同的高度,这就是当它们居中时如何处理不同的高度。否则,您将需要在元素周围放置另一个包装器。而这个包装器位于中心
猜你喜欢
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 2021-12-24
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 2013-05-12
相关资源
最近更新 更多