html - Flexbox:水平和垂直居中

标签 html css flexbox

如何使用 flexbox 在容器内水平和垂直居中 div。在下面的示例中,我希望每个数字彼此下方(以行为单位),它们水平居中。

.flex-container {
  padding: 0;
  margin: 0;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: center;
}
row {
  width: 100%;
}
.flex-item {
  background: tomato;
  padding: 5px;
  width: 200px;
  height: 150px;
  margin: 10px;
  line-height: 150px;
  color: white;
  font-weight: bold;
  font-size: 3em;
  text-align: center;
}
<div class="flex-container">
  <div class="row">
    <span class="flex-item">1</span>
  </div>
  <div class="row">
    <span class="flex-item">2</span>
  </div>
  <div class="row">
    <span class="flex-item">3</span>
  </div>
  <div class="row">
    <span class="flex-item">4</span>
  </div>
</div>

http://codepen.io/anon/pen/zLxBo

最佳答案

我想你想要类似下面的东西。

html, body {
    height: 100%;
}
body {
    margin: 0;
}
.flex-container {
    height: 100%;
    padding: 0;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.row {
    width: auto;
    border: 1px solid blue;
}
.flex-item {
    background-color: tomato;
    padding: 5px;
    width: 20px;
    height: 20px;
    margin: 10px;
    line-height: 20px;
    color: white;
    font-weight: bold;
    font-size: 2em;
    text-align: center;
}
<div class="flex-container">
    <div class="row"> 
        <div class="flex-item">1</div>
        <div class="flex-item">2</div>
        <div class="flex-item">3</div>
        <div class="flex-item">4</div>
    </div>
</div>

查看演示:http://jsfiddle.net/audetwebdesign/tFscL/

如果您想要高度和顶部/底部填充,您的 .flex-item 元素应该是 block 级(div 而不是 span)正常工作。

另外,在 .row 上,将宽度设置为 auto 而不是 100%

您的 .flex-container 属性很好。

如果您希望 .row 在视口(viewport)中垂直居中,请将 100% 高度分配给 htmlbody,并且将 body 边距清零。

注意.flex-container需要一个高度才能看到垂直对齐的效果,否则容器会计算包围内容所需的最小高度,小于这个中的视口(viewport)高度例子。

脚注:
flex-flowflex-directionflex-wrap 属性可以让这个设计更容易实现。我认为不需要 .row 容器,除非您想在元素周围添加一些样式(背景图像、边框等)。

一个有用的资源是:http://demo.agektmr.com/flexbox/

关于html - Flexbox:水平和垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19026884/

相关文章:

javascript - 在 .load() 中的元素上使用 jQuery

asp.net - 通过asp.net控件修改css显示

html - 将包装元素放在网格的中心

css - flex-wrap wrap时flex-shrink有什么用吗?

css - 为什么利润率没有崩溃?

html - 柔性 : Select the first and last item in each row within a wrapped flex

html - 文本越过导航栏

JavaScript:如何清除我的自定义键盘映射并使用默认键盘映射

javascript - 在没有中间 DOM 节点的 Aurelia 中渲染组件

html - 表格行填充剩余高度 Chrome vs. Firefox