Bootstrap 4 Trung tâm dọc và ngang


162

Tôi có một trang chỉ tồn tại biểu mẫu và tôi muốn biểu mẫu được đặt ở giữa màn hình.

<div class="container">
  <div class="row justify-content-center align-items-center">
    <form>
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>  
</div>

Biểu justify-content-centermẫu căn chỉnh theo chiều ngang, nhưng tôi không thể tìm ra cách căn chỉnh nó theo chiều dọc. Tôi đã cố gắng sử dụng align-items-centeralign-self-center, nhưng nó không hoạt động.

Tôi đang thiếu gì?

BẢN GIỚI THIỆU

Câu trả lời:


322

Cập nhật 2019 - Bootstrap 4.3.1

không cần cho thêm CSS . Những gì đã có trong Bootstrap sẽ hoạt động. Hãy chắc chắn rằng (các) thùng chứa của mẫu có chiều cao đầy đủ . Bootstrap 4 hiện có một h-100lớp cho chiều cao 100% ...

Trung tâm dọc:

<div class="container h-100">
  <div class="row h-100 justify-content-center align-items-center">
    <form class="col-12">
      <div class="form-group">
        <label for="formGroupExampleInput">Example label</label>
        <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
      </div>
      <div class="form-group">
        <label for="formGroupExampleInput2">Another label</label>
        <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
      </div>
    </form>   
  </div>
</div>

https://www.codeply.com/go/raCutAGHre

chiều cao của vật chứa với (các) vật phẩm đến trung tâm phải là 100% (hoặc bất cứ chiều cao nào bạn muốn có liên quan đến vật phẩm ở giữa)

Lưu ý: Khi sử dụng height:100%( phần trăm chiều cao ) trên bất kỳ phần tử nào, phần tử sẽ lấy chiều cao của phần chứa của nó . Trong các trình duyệt hiện đại, các đơn vị vh height:100vh;có thể được sử dụng thay vì %để có được chiều cao mong muốn.

Do đó, bạn có thể đặt html, body {height: 100%} hoặc sử dụng min-vh-100lớp mới trên container thay vì h-100.


Trung tâm ngang:

  • text-centerđến display:inlinecác yếu tố trung tâm & nội dung cột
  • mx-auto để định tâm bên trong các yếu tố flex
  • offset-*hoặc mx-autocó thể được sử dụng để cột giữa ( .col-)
  • justify-content-centervào cột giữa ( col-*) bên trongrow

Trung tâm căn chỉnh dọc trong Bootstrap 4
Bootstrap 4 ở giữa toàn màn hình ở giữa
Bootstrap 4 nhóm đầu vào trung tâm
Bootstrap 4 ngang + trung tâm toàn màn hình dọc


Bạn có thể sử dụng <section>thẻ này không, hay nên sử dụng thẻ để <div>định tâm nội dung theo chiều ngang và chiều dọc trong chế độ xem? Tôi đã có một trang web hiện có các trang có các phần thay đổi màu sắc và / hoặc hình nền.
Adrian

Không phải bất kỳ con trực tiếp của hàng là một .col?
Miguel Stevens

7
Câu trả lời này hơi bị hỏng. Bạn tuyên bố rõ ràng "KHÔNG CẦN cho CSS bổ sung" nhưng điều đó là sai. Trong mẫu mã của bạn, nó cho thấy bạn phải đặt thân và html là 100% trong CSS bên ngoài Bootstrap 4. Nếu không có CSS ​​bổ sung này, giải pháp của bạn không hoạt động.
Thiếu tá

1
Không, phần thân và html không "bên ngoài" .. Các lớp CSS Bootstrap cũng có thể được thêm vào chúng! codeply.com/go/5ifNMHKUEy @dawn .. điều gì đặc biệt không hoạt động? Nhận xét của bạn không hữu ích.
Zim

Container không cần 100% nhưng h-100 justify-content-center align-items-centerđã hoạt động
JMP

18

Công việc này đối với tôi:

<section class="h-100">
  <header class="container h-100">
    <div class="d-flex align-items-center justify-content-center h-100">
      <div class="d-flex flex-column">
        <h1 class="text align-self-center p-2">item 1</h1>
        <h4 class="text align-self-center p-2">item 2</h4>
        <button class="btn btn-danger align-self-center p-2" type="button" name="button">item 3</button>
      </div>
    </div>
  </header>
</section>

1
Đừng quên thêm kiểu css:<style type="text/css"> html, body{ height: 100%; } .full-page{ height: 100vh; width: 100vw; } </style>
pyOwner

15

flexbox có thể giúp bạn. thông tin ở đây

<div class="d-flex flex-row justify-content-center align-items-center" style="height: 100px;">
    <div class="p-2">
     1
    </div>
    <div class="p-2">
     2
    </div>
</div>

10

Bạn cần một cái gì đó để tập trung vào hình thức của bạn vào. Nhưng vì bạn không chỉ định chiều cao cho html và nội dung của mình, nên nó sẽ chỉ bao bọc nội dung - chứ không phải khung nhìn. Nói cách khác, không có chỗ để đặt vật phẩm vào giữa.

html, body {
  height: 100%;
}
.container, .row.justify-content-center.align-items-center {
  height: 100%;
  min-height: 100%;
}

1
Ngoài ra, h-100lớp produc có thể được sử dụng height:100%trong Bootstrap 4.
Zim

1
Bây giờ tôi khuyên bạn nên sử dụng giải pháp của @ZimSystem vì nó không cần CSS tùy chỉnh và chỉ sử dụng các lớp được cung cấp bởi Bootstrap.
Bram Vanroy

1
@BramVanroy như bạn đã nói tôi đã sử dụng giải pháp của ZimSystem nhưng nó không hoạt động với tôi. giải pháp của bạn cũng hoạt động trên cả hai phiên bản 4.0.0 và 4.1.0
Sahan Pasindu Nirmal

9

Bootstrap có trung tâm văn bản để căn giữa một văn bản. Ví dụ

<div class="container text-center">

Bạn thay đổi như sau

<div class="row justify-content-center align-items-center">

theo sau

<div class="row text-center">

7

Không ai đã làm việc cho tôi. Nhưng anh ấy đã làm.

Vì lớp Bootstrap 4 .row hiện đang hiển thị: flex bạn chỉ cần sử dụng tiện ích flexbox tự căn chỉnh mới trên bất kỳ cột nào để căn giữa theo chiều dọc:

<div class=”row”>
   <div class=”col-6 align-self-center>
      <div class=”card card-block>
      Center
      </div>
   </div>
   <div class=”col-6">
      <div class=”card card-inverse card-danger>
      Taller
      </div>
   </div>
</div>

Tôi đã tìm hiểu về nó từ https://medium.com/wdstack/bootstrap-4-vertical-center-1211448a2eff


2

Điều này đang hoạt động trong IE 11 với Bootstrap 4.3 . Trong khi các câu trả lời khác không hoạt động trong IE11 trong trường hợp của tôi.

 <div class="row mx-auto justify-content-center align-items-center flex-column ">
    <div class="col-6">Something </div>
</div>

0

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <div class="col-12 border border-info">
          <div class="d-flex justify-content-center align-items-center" style="height: 100px">
              <a href="#" class="btn btn-dark">Transfer</a>
              <a href="#" class="btn btn-dark mr-2 ml-2">Replenish</a>
              <a href="#" class="btn btn-dark mr-3">Account Details</a>
          </div>
    </div>


0

Sử dụng mã này trong CSS:

.container {
    width: 600px;
    height: 350px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: inline-flex;
}

0

Tôi đã kết thúc ở đây vì tôi gặp vấn đề với hệ thống lưới Bootstrap 4 và vòng lặp Angular * ngFor. Tôi đã sửa nó bằng cách áp dụng lớp col justify-content-centre cho div triển khai ngFor:

<div class="row" style="border:1px solid red;">
  <div class="col d-flex justify-content-center">
    <button mat-raised-button>text</button>
  </div>
  <div *ngFor="let text of buttonText" class="col d-flex justify-content-center">
    <button mat-raised-button>text</button>
  </div>
</div>

đưa ra kết quả: nhập mô tả hình ảnh ở đây


0

Từ tài liệu (bootrap 4):

https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content

.justify-content-start
.justify-content-end
.justify-content-center
.justify-content-between
.justify-content-around
.justify-content-sm-start
.justify-content-sm-end
.justify-content-sm-center
.justify-content-sm-between
.justify-content-sm-around
.justify-content-md-start
.justify-content-md-end
.justify-content-md-center
.justify-content-md-between
.justify-content-md-around
.justify-content-lg-start
.justify-content-lg-end
.justify-content-lg-center
.justify-content-lg-between
.justify-content-lg-around
.justify-content-xl-start
.justify-content-xl-end
.justify-content-xl-center
.justify-content-xl-between
.justify-content-xl-around
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.