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

将弹性项目的列垂直居中并左对齐

谢财
2023-03-14
问题内容

要求

  1. 弹性盒
  2. 垂直中间
  3. 水平向左
  4. 垂直堆叠的子元素
  5. 子元素的数量可以是一个或多个
  6. 使用旧语法,以便Android 4.2能够理解

听起来很难描述。演示中的粉红色框是我想要的外观。绿框已经很好,只是我不知道如何处理多个子元素。

我认为解决方案可能是以下各项的组合,但我做不到。

align-items: center;
flex-direction: column;



body {

  margin: 1em .5em;

}

article {

  display: flex;

  align-items: center;

  flex-wrap: wrap;

}



section {

  height: 18em;

  background: #ccc;

  margin: 0 .5em;

  position: relative;

  display: flex;

  align-items: center;

}

section:after {

  font-size: smaller;

  color: blue;

  position: absolute;

  bottom: 0;

}

section.big {

  width: 20%;

  height: 5em;

}

section.small {

  width: 10%;

  flex: 1;

}

section div {

  outline: 1px dotted green;

}

section.want {

  background-color: pink;

}

section.want:after {

  content: "1) want to do like this: vertically middle, horizontally left, while section will contain one or several child elements";

}

section.only1 {

  background-color: lightgreen;

}

section.only1:after {

  content: "2) all good except one point:the number of child element must be one.";

}

section.row:after {

  content: "3) by default flex-diraction is row";

}

section.col {

  flex-direction: column;

}

section.col:after {

  content: "4) this can vertically stack multiple stacks, but they no longer horizontally left-align";

}

section.col.justify {

  justify-content: center;

  align-items: flex-start;

  background-color: lightblue;

}

section.col.justify:after {

  content: "6) this is good!  Solved.";

}

section.colmar {

  flex-direction: column;

}

section.colmar:after {

  content: "5) this can vertically stack multiple stacks, and left-align divs, but divs are not vertically center";

}

section.colmar div {

  margin-right: auto;

}


<article>

  <section class="small want">

    line1

    <br/>line2

  </section>

  <section class="small only1">

    <div>only 1 div</div>

  </section>

  <section class="small row">

    <div>div1</div>

    <div>div2</div>

  </section>

  <section class="small col">

    <div>div1</div>

    <div>div2</div>

  </section>

  <section class="small colmar">

    <div>div1</div>

    <div>div2</div>

  </section>

  <section class="small col justify">

    <div>div1</div>

    <div>div2</div>

  </section>

</article>

Codepen演示


问题答案:

justify-content 沿主轴对齐弹性项目。

align-items
沿始终垂直于主轴的横轴对齐弹性项目。

取决于flex-direction,主轴可以是水平或垂直的。

由于flex-direction:column意味着主轴是垂直的,因此您需要使用justify-contentalign- items使弹性项目居中的方式。

这是一个例子:

#container {

  display: flex;

  flex-direction: column;

  justify-content: center;

  height: 200px;

  background-color: lightpink;

}


<div id="container">

  <div class="box">div 1</div>

  <div class="box">div 2</div>

  <div class="box">div 3</div>

  <div class="box">div 4</div>

  <div class="box">div 5</div>

</div>


 类似资料:
  • 问题内容: 我试图用flex框将内容垂直居中,但没有成功。我不喜欢使用或因为它不是固定大小。我的代码有什么问题? 问题答案: 您的伸缩容器没有多余的高度。唯一的高度是内容的高度。因此,没有用于垂直居中的空间。 第一步,增加一些高度: 第二步,删除不必要的规则,其中一些规则会阻止垂直对齐。

  • 问题内容: 我的网站上移动菜单的底部有一个基于伸缩的无序社交媒体图标列表。 我正在尝试让三排并排坐,等距离分开。我已经用规则来解决了 但是 我的问题是,当有三个以上的项目时,下一行从中间开始填充,而我希望 随着用户添加更多图标, 它从左侧开始填充 。 我越深入地解释这一点,我就越不确定这是否可能,但是我想我还是把它扔出去了,以防万一。 是否可以使下一行中的列表项从容器的左侧开始,而不会弄乱规则?

  • 本文向大家介绍bootstrap modal弹出框的垂直居中,包括了bootstrap modal弹出框的垂直居中的使用技巧和注意事项,需要的朋友参考一下 本人前端菜鸟,公司项目尝试采用bootstrap,我身先士卒为同事趟“坑”,无奈UI妹子刁难非得让modal弹出框垂直居中,为了前端开发岗位的荣誉,花时间满足之。 最先就是百度咯,方法,就是修改源码 这里的that.element就是最外层的d

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

  • 问题内容: 我有一个具有以下属性的flex容器(蓝色正方形): 因此,其子项(浅蓝色方块)如下所示排列它们自己。但是,我想从正常流程中添加另一个孩子(绿色正方形)并将其相对于其父对象放置。要将其定位在下面,如您所见,我最好编写类似bottom: 20px;和的内容margin: auto;。 我试着z-index无济于事。我应该如何处理?我应该使用另一个父元素吗? 问题答案: 以下是实现此布局的五

  • 问题内容: 我怎么能垂直居中内的? 到目前为止,我的代码: 我已经尝试过“ top:50%”;和“ vertical-align:middle”;没有成功 编辑: 好的,所以已经讨论了很多。我也许已经开始了另一场小型的火焰战争。但是为了论证,那我该如何用一个表呢?到目前为止,我已经将CSS用于其他所有内容,所以这并不是说我没有尝试采用“良好做法”。 编辑: 内部div没有固定的高度 问题答案: 简