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

在高度未知的情况下使用flexbox垂直居中的问题

贝浩歌
2023-03-14
问题内容

我的布局有一个容器flex-container和一个孩子。

HTML:

<div class="flex-container">
  <div>text</div>
</div>

容器和孩子的身高未知。目标是:

如果孩子的身高低于容器,则其水平和垂直居中。
如果孩子的身高大于容器,则它会调整到顶部和底部,我们可以滚动。
方案: 在此处输入图片说明

使用flexbox将元素居中的最快方法是:

.flex-container

{

  display: flex;

  align-items: center; /* vertical */

  justify-content: center; /* horizontal */



  width: 100%;

  height: 300px; /* for example purposes */

  overflow-y: scroll;

  background: #2a4;

}



.flex-container > div

{

  background: #E77E23;

  width: 400px;

}


<div class="flex-container">

  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>

</div>

但是,如果容器的子代具有更高的高度,则该子代将无法
正确显示。子项显示为割伤(仅顶部)。

html,body

{

  height: 100%;

  width: 100%;

  padding: 0;

  margin: 0;

}



.flex-container

{

  display: flex;

  align-items: center; // vertical

  justify-content: center; // horizontal



  width: 100%;

  height: 100px;

  overflow-y: scroll;

  background: #2a4;

}



.flex-container > div

{

  background: #E77E23;

  width: 400px;

}


<div class="flex-container">

  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>

</div>

问题答案:

I found the solution:

.flex-container
{
  display: flex; /* only */
  overflow-y: scroll;
}

.flex-container > div
{
  margin: auto; /* horizontal and vertical align */
}



html,body

{

  height: 100%;

  width: 100%;

  padding: 0;

  margin: 0;

}



.flex-container

{

  display: flex;

  width: 100%;

  height: 100px; /* change height to 300px */

  overflow-y: scroll;

  background: #2a4;

}



.flex-container > div

{

  padding: 1em 1.5em;

  margin: auto;

  background: #E77E23;

  width: 400px;

}


<div class="flex-container">

  <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>

</div>


 类似资料:
  • 本文向大家介绍写出div在不固定高度的情况下水平垂直居中的方法?相关面试题,主要包含被问及写出div在不固定高度的情况下水平垂直居中的方法?时的应答技巧和注意事项,需要的朋友参考一下 我知道的有两种方法

  • 问题内容: 我正在尝试使用CSS的flexbox垂直居中放置项目;而且,我知道如何使用非供应商前缀的代码来做到这一点,但是即使使用供应商前缀,我也无法在Webkit(Chrome)中使用它。 我正在尝试垂直对齐#trigger中的跨度。 这是我的CSS: 有什么想法我做错了吗? 而且,如果您知道我正在使用的其他供应商前缀/版本的属性,请随时共享它们,以便它不仅可以在Webkit中使用。 问题答案:

  • 问题内容: 如何使用flexbox在容器内水平和垂直居中div。在下面的示例中,我希望每个数字都彼此相邻(按行),并水平居中。 问题答案: 我认为您想要以下内容。 你的元素应该是块级(而非)如果你想要的高度和顶部/底部填充,以正常工作。 另外,在上,将宽度设置为而不是。 您的属性很好。 如果您希望垂直居中于视口中,请为和分配100%的高度,然后将页边距清零。 请注意,需要一个高度才能看到垂直对齐效

  • 如何使用FlexBox在容器内水平和垂直地居中div。在下面的例子中,我希望每一个数字在彼此下面(在行中),水平居中。 null null http://codepen.io/anon/pen/zlxbo

  • 本文向大家介绍写出在不固定宽高的元素在固定高度的情况下水平垂直居中的方法相关面试题,主要包含被问及写出在不固定宽高的元素在固定高度的情况下水平垂直居中的方法时的应答技巧和注意事项,需要的朋友参考一下 flex布局;还有就是可以用定位也可以实现等等; flex:父div:{display:flex; justify-content: center;align-items: center;}; 定位方

  • 我试图使用两个div并排响应设计。左div包含一个随页面大小变化的图像。右div包含一个不会改变的菜单。当页面达到一定大小(太小)时,菜单应该在图像下方并停留在中间)。 但它也需要垂直对齐在左边的div的中间。 应在较大屏幕上垂直居中: 目前,它可以在较小的屏幕上正常工作: 这是我的HTML: 这是我的CSS: 我尝试了所有方法,但是所有其他常规对齐方法都打破了其他方法。