拉伸显示flex或表格内部div沿着父级与居中文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拉伸显示flex或表格内部div沿着父级与居中文本相关的知识,希望对你有一定的参考价值。

我想创建一个具有固定html结构的响应式页面,以便我可以调整css。我想创建具有垂直和水平居中文本的行。 div应完全延伸到父div。

我的HTML ...

<body>
  <div class="parent">
    <div class="d1">
      one
    </div>
    <div class="d2">
      two
    </div>
    <div class="d3">
      three
    </div>
  </div>
</body>

我的CSS ......

body {
  background-color: lightyellow;
  height: 100%;
  width: 100%;
  margin: 0px;
}
.parent {
  background-color: lightblue;
  height: 100%;
}
.d1, .d2, .d3 {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  height: 100px;
}
.d2 {
  background-color: lightgreen;
}

但是在这里我将d1,d2和d3设置为100px的高度而不是父div的100%。示例:https://jsfiddle.net/bLf2sxq0/

我的第二个想法是使用display:table作为父项,这会导致子项的表行,但最后我会遇到相同的拉伸问题,而且文本不是垂直居中的。这里的css会是这样的......

body {
  background-color: lightyellow;
  height: 100%;
  width: 100%;
  margin: 0px;
}
.parent {
  width: 100%;
  height: 100%;
  display: table;
  background-color: lightblue;
}
.d1, .d2, .d3 {
  text-align: center;
  height: 100px;
}
.d2 {
  background-color: lightgreen;
}

示例:https://jsfiddle.net/qmbzkwr2/

有没有办法沿着父项垂直拉伸div并保持文本在div中垂直和水平居中?所以我不会有宽度100px,但像calc(100%/ 3)或任何其他解决方案这样做?或者也许通过使用flex grow选项?最简单的方法就是这样:)

谢谢你的帮助!

答案

你走在正确的轨道上。使用flexbox可垂直均匀地拉伸和填充项目。请记住将父容器(例如body,html)设置为height: 100%

从这里开始,如果你想控制某些项目,可以在任何单独的项目上使用flex,比如类.d2上的flex: 1 1 300px

Codepen

body, html {
  height: 100%;
}

.parent {
   background-color: lightblue;
   height: 100%;
   
   display: flex;
   flex-direction: column;
 }

 .d1, .d2, .d3 {
   display: flex;
   align-items: center;
   justify-content: center;
   flex: 1;
 }

 .d2 {
   background-color: lightgreen;
 }
  <div class="parent">
    
    <div class="d1">
      <div class="d11">
        one
      </div>
    </div>
    
    <div class="d2">
      two
    </div>
    
    <div class="d3">
      three
    </div>
    
  </div>

以上是关于拉伸显示flex或表格内部div沿着父级与居中文本的主要内容,如果未能解决你的问题,请参考以下文章

均匀间隔子级,但将父级与 flex 右对齐

Flex wrap - 堆叠行而不拉伸? [复制]

显示 flex 不起作用并且无法使 div 居中

Div居中在屏幕正中间

将内部 div 拉伸到屏幕的全高和溢出的内容

html中表格怎样设置文字居中