当前位置: 首页 > 面试题库 >

如何垂直对齐高度未知的浮动元素?

王修为
2023-03-14
问题内容

我有一个(水平)居中的外部div,其中包含两个宽度未知的元素:

<div style='width:800px; margin:0 auto'>
  <div style='float:left'>...</div>
  <div style='float:right'>...</div>
</div>

默认情况下,两个浮点都是顶部对齐的,并且高度/高度未知/不同。有什么办法可以使它们垂直居中?

我最终做了外股

display: table

和内部div

display: table-cell;
vertical-align: middle;
text-align: left/right;

但我很好奇,是否有办法用花车做到这一点。


问题答案:

您不能直接执行此操作,因为浮点数与顶部对齐:

如果有一个线框,则浮动框的外部顶部与当前线框的顶部对齐。

确切的规则说(强调我的):

  1. 浮动框的外部顶部不得高于其包含的块的顶部。
  2. 浮动框的外部顶部不得高于源文档中早期元素生成的任何块或浮动框的外部顶部。
  3. 元素的浮动框的外部顶部不得高于包含由源文档中前面的元素生成的框的任何行框的顶部。
  1. 必须将浮动框放置在尽可能高的位置。

也就是说,您可以利用规则4:

  • 将每个float放置在建立新块格式化上下文/BFC的内联级元素内,例如display: inline-block
  • 这些包装器将包含浮点数,因为它们建立了BFC;而由于它们是内联级别,它们将彼此相邻。
  • 用于vertical-align垂直对齐这些包装纸。

请注意,内联块包装器之间可能会出现一些空间。请参见如何删除内联块元素之间的空间?要解决这个问题。

.float-left {

  float: left;

}



.float-right {

  float: right;

}



#main {

  border: 1px solid blue;

  margin: 0 auto;

  width: 500px;

}



/* Float wrappers */

#main > div {

  display: inline-block;

  vertical-align: middle;

  width: 50%;

}


<div id="main">

  <div>

    <div class="float-left">

      <p>AAA</p>

    </div>

  </div>

  <div>

    <div class="float-right">

      <p>BBB</p>

      <p>BBB</p>

    </div>

  </div>

</div>


 类似资料:
  • 问题内容: 我有一个div(#wrapper),其中包含2个并排站立的div。 我希望将右div垂直对齐。我在主包装器上尝试了vertical-align:middle,但是它不起作用。它让我发疯! 希望有人能帮忙。 HTML: CSS: 问题答案: 您没有浮点元素的运气。他们不服从垂直对齐, 您需要的是: 请小心,因为它将元素之间的空白解释为真实的空白。它不会像对待它那样忽略它。 我建议这样做:

  • 问题内容: 如何使条形图的底部而不是顶部?现在它们粘在容器()的顶部,但我希望它们粘在底部。 如您所见,我不知道最高条的高度,所以我也不知道容器的高度。 应该简单吧?如果有帮助,它只能在不错的浏览器中工作。 PS。条的数量是可变的(在示例中不是),其高度是可变的。只有它们的宽度是静态的。定位无济于事,因为容器div没有测量值。 问题答案: 这将达到目的: 它在默认情况下已应用的父div上使用。这改

  • 问题内容: 我有一个包含两个图片的div和一个。它们都需要在div内垂直对齐,彼此相邻。 其中一张图片需要放在div内。 要在所有常见的浏览器上运行,需要什么CSS? 问题答案: 简而言之: 内联元素 (并且 仅 内联元素)可以在上下文中垂直对齐。但是,“上下文”不是整个父容器的高度,而是它们所在的文本行的高度 对于块元素,垂直对齐更加困难,并且在很大程度上取决于特定情况: 如果内部元件可以有一个

  • 问题内容: 我有一个包含标题,文本和图像的列表,有时,当文本不足时,我的列表开始破裂。列表开始嵌套。 我这里有一个例子: 解决此问题的最佳方法是什么? 问题答案: 您缺少的部分是清除s。用这个: 现在您将删除“嵌套”。 请注意,在使用浮动容器时,应始终将 它们放置在紧随其后的下一个容器之前,从而在调用它时创建新的 块格式化上下文 。否则,您将看到不可预测的行为。 修改后的演示如下:

  • 垂直对齐 1. grid-template-areas 属性值保持换行,并使用空格保持每列垂直对齐。 例如: .foo { grid-template-areas: "header header" "nav main" "footer ...."; } 2. grid、grid-template

  • 本文向大家介绍如何垂直居中一个浮动的元素?相关面试题,主要包含被问及如何垂直居中一个浮动的元素?时的应答技巧和注意事项,需要的朋友参考一下 给浮动元素套一个父盒子与之大小一致然后使用绝对定位使其垂直居中