簡體   English   中英

使用 flexbox 垂直居中項目 - align-items: center 不起作用?

[英]Vertically center item with flexbox - align-items: center doesn't work?

我使用此線程中的樣式使進度條填充 div 中的空白區域(只有其他項目是按鈕)。

現在的問題是align-items: center不會垂直居中進度條。 我也嘗試使用align-content: center在孩子身上,但沒有效果。

這是代碼,以防您沒有打開鏈接

.wrapper {
  display: flex;
  flex-direction: row;
  align-items: center;
  width: 100%;
  height: 5em;
  background: #ccc;
}
.wrapper > .left
{
  background: #fcc;
}
.wrapper > .right
{
  background: #ccf;
  flex: 1;
}

標記:

<div class="wrapper">
  <div class="left">Left</div>
  <div class="right">Right</div>
</div>

有人能告訴我我做錯了什么嗎? 提前致謝

這是它的外觀:

這是它的樣子

我想您可以執行以下操作以使其正確:

  1. .progress元素有一個margin - 首先你可以取消它:

     .wrapper > .left > .progress { margin: 0; }
  2. wrapper 100% 的高度

  3. 我還移除了包裝容器的height: 10vh以完成操作。

請參閱此處修改后的小提琴和下面的片段:

 /* Latest compiled and minified CSS included as External Resource*/ /* Optional theme */ @import url('//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css'); body { margin: 10px; } .wrapper { display: flex; align-items: center; width: 100%; background: #ccc; height: 100%; } .wrapper > .left { background: #fcc; flex: 1; } .wrapper > .right { background: #ccf; } .wrapper > .left > .progress { margin: 0; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> <div class="container"> <div class="row"> <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3 col-s-6 col-s-offset-3" style="background:purple; position:relative; border-radius:10px;"> <div class="wrapper"> <div class="left"> <div class="progress"> <div class="progress-bar" role="progressbar" aria-valuenow="35" aria-valuemin="0" aria-valuemax="100" style="width:35%"> </div> </div> </div> <div class="right"> <button type="button" aside-menu-toggle="menu-1" class="btn btn-sm btn-default">Меню</button> </div> </div> </div> </div> </div>

讓我知道您對此的反饋。 謝謝!

flex 容器將僅對其直接子級啟用 flex 上下文。 因此,您的“進度條”div 遙不可及。 同樣,你的紫色背景欄在 flex 容器(包裝器)之前,所以不要指望它的內容也居中。 您可以查看本指南

檢查此代碼:

<div class="container">
  <div class="row">
    <div class="col-lg-6 col-lg-offset-3 col-md-6 col-md-offset-3 col-s-6 col-s-offset-3" style="background:purple; height:10vh; position:relative; border-radius:10px;">
      <div class="wrapper">
        <div class="left">
          left
        </div>
        <div class="right">
          right
        </div>
      </div>
    </div>
  </div>
</div>

筆基於您的代碼在這里

嘗試添加

  align-items: center;
  justify-content: center;

到您的.wrapper類。

這里有一篇關於 FlexBox 定位的好文章: https ://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM