【问题标题】:Vertically centering objects in flexboxflexbox中的对象垂直居中
【发布时间】:2016-02-01 04:17:54
【问题描述】:

我必须在 flexbox 中垂直对齐项目。这是我的代码: http://pastebin.com/1YKrYxA3

代码片段:

.flex-conteneur {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  width: 1026px;
  height: 300px;
  background-color: gray;
  font-color: white;
  margin-left: auto;
  margin-right: auto;
  justify-content: space-around;
}
.colone1 {
  width: 180px;
  height: 100px;
  background-color: black;
  color: white;
  font-family: arial;
  font-size: 0.9em;
  align-items: center;
}
.colone2 {
  width: 400px;
  height: 150px;
  background-color: black;
  color: white;
  font-style: italic;
  font-family: arial;
  font-size: 0.9em;
}
.colone3 {
  width: 200px;
  height: 100px;
  background-color: black;
  color: white;
  font-style: italic;
  font-family: arial;
  font-size: 0.9em;
}
.titre {
  width: 1024px;
  height: 20px;
  background-color: gray;
  color: white;
  font-family: arial;
  font-size: 1.5em;
  font-family: "Arial Black"
}
<div class="flex-conteneur">
  <div class="titre">
    Programmation Web : INF2005
  </div>
  <ul class="colone1">
    <li>
      <a href "#">Acceuil</a>
    </li>
    <li>
      <a href "#">Notes de cours</a>
    </li>
    <li>
      <a href "#">Atelirs</a>
    </li>
    <li>
      <a href "#">Travaux Pratiques</a>
    </li>
  </ul>

  <div class="colone2">
    Ce gabarit doit être structuré avec des div et mise en forme avec CSS
  </div>

  <div class="colone3">
    Colone 3 : contenu secondaire
  </div>
</div>

我尝试使用align-content 似乎不起作用。

【问题讨论】:

标签: html css flexbox vertical-alignment


【解决方案1】:

在查看您的代码时,任何地方都没有 align-content 属性。它在您的代码中不存在。

align-content 属性管理多行 flex 项目沿 flex 容器的横轴的对齐方式。此属性对 flex 容器中的单行没有影响。

虽然没有align-content,但有一个align-items 声明。

.colone1 {
    width: 180px;
    height: 100px;
    background-color: black;
    color: white;
    font-family: arial;
    font-size: 0.9em;
    align-items: center;
}

然而,问题在于您将align-items 属性应用于弹性项目,而它仅适用于弹性容器。

如果您的目标是将ul 的内容与colone1 类垂直居中,那么您还必须应用display: flex,这样弹性项目也将成为弹性容器。

如果您的目标是将.colone1 垂直居中,那么您需要将align-items: center 应用于弹性容器(.flex-conteneur)。

一些弹性属性只适用于弹性项目。其他仅在弹性容器上。有关按父项和子项划分的属性列表,请参阅这篇文章:A Complete Guide to Flexbox

【讨论】:

  • 您好,我尝试将 align-items: center 应用于 flex-conteneur。不工作。不知道是不是其他的东西和属性有冲突?
  • 它确实有效,但也许我们在这里谈论的是不同的事情。您能否进一步描述或发布您尝试实现的布局的图像?
  • 我希望它们垂直居中的框中的文本
  • 好的,那么您必须将display: flex 应用于每个弹性项目以使其成为弹性容器...jsfiddle.net/acjuaes4
  • 哦,好吧,为了让它工作,我需要在主 flexbox 中“创建”第二个 flexbox 容器,以便我可以将属性应用到它?聪明的 !我一直觉得在 HTML 和 CSS 中垂直对齐内容很棘手。
【解决方案2】:

align-content 只影响多行 flex 容器;它对齐包含的行。

你想要align-items,这会影响实际的弹性项目。

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 2016-09-10
    • 2019-02-25
    相关资源
    最近更新 更多