如何居中对齐 flexbox 容器? [复制]

Posted

技术标签:

【中文标题】如何居中对齐 flexbox 容器? [复制]【英文标题】:How to center align a flexbox container? [duplicate] 【发布时间】:2016-12-18 04:11:28 【问题描述】:

我成功创建了一个响应式网格,如 sn-p 所示。

目前,我看到方框向左对齐。

如何在不使用填充的情况下将容器放在页面中心?

我尝试使用margin:auto,但没有成功。

.container
    display:flex;
    flex-wrap:wrap;
    text-align:center;
    margin:auto;

.box
    width:100%;
    max-width:30%;
    border:1px solid red;
    margin:5px;

@media only screen and ( max-width:768px )	
    .box
        width:100%;
        max-width:40%;
        border:1px solid red;
    
<section class="container">
    <div class="box">
        <h1>This is the first box</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci voluptates, aut totam eaque possimus molestiae atque odio vero optio porro magni, quis culpa ea. Perferendis, neque, enim. Rem, quia, quisquam.</p>
    </div>
</section>

JS Fiddle.

【问题讨论】:

为你的容器类添加宽度 要使用margin:auto,您的容器必须有width 我在容器中添加了 100% 的宽度,但没有效果。这里是我的 sn-p:jsfiddle.net/cx1svoky/3 以 px 为单位给出宽度,例如 500px @chirag。我实际上尝试了 1000px,但它并没有真正居中。 【参考方案1】:

使用justify-content: center; 代替margin: auto;

.container 
  display: flex;
  flex-wrap: wrap;
  text-align: center;
  justify-content: center;

.box 
   width: 100%;
   max-width: 30%;
   border: 1px solid red;
   margin: 5px;

@media only screen and (max-width: 768px)  
  .box 
    width: 100%;
    max-width: 40%;
    border: 1px solid red;
  

justifiy-content docs on MDN。

Updated JS Fiddle.

【讨论】:

完美居中。但我只是注意到第四个框现在没有浮动到左边。这个想法是从左边添加框以便随着更多文章的出现而写。例如,如果我有 7 个盒子,第七个盒子应该流向左侧而不是中心。希望我说得有道理。 @WosleyAlarico 然后你可以使用固定宽度的margin: 0 auto;,例如width: 800px;。见JS Fiddle。 它不像我之前在其他 cmets 中提到的那样真正居中。但好吧,这似乎是唯一的选择。【参考方案2】:

只需将此行添加到您的原始代码中:

.container
  width: 100%

并将div 框放入另一个具有margin: auto;div

如果您需要在同一行中添加 2 个框,请将 display: inline-table; 添加到 box 类中

【讨论】:

介意送个小提琴吗?【参考方案3】:

使用margin:0px auto;width

例如:

.container

display:flex;
flex-wrap:wrap;
text-align:center;
margin:0px auto;
width: 400px;

【讨论】:

【参考方案4】:

因此,如果您希望从左到右添加框,并且下一行的第一个框左对齐,您可以使用:`

.container 
  display:flex;
  flex-flow: row wrap;
  justify-content: flex-start;
  margin: 0 auto;
  border: 1px solid red;

.container:after 
  content: "";
  flex: auto;

Fiddle

【讨论】:

这不会使 flexbox 容器居中

以上是关于如何居中对齐 flexbox 容器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在元素的一部分上居中 Flexbox

在本机反应中,Flexbox中的文本垂直居中对齐

如何使用 Flexbox 使一个弹性项目居中对齐并右对齐另一个

如何对齐弹性框中的项目? [复制]

Flexbox垂直对齐溢出[重复]

当其他元素居中对齐时,使用 Flexbox 将页脚与页面底部对齐