Bootstrap 4 Center การจัดแนวตั้งและแนวนอน


163

ฉันมีหน้าเว็บที่มีแบบฟอร์มเท่านั้นและฉันต้องการให้แบบฟอร์มอยู่ตรงกลางของหน้าจอ

<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>

การjustify-content-centerจัดแนวแบบฟอร์มในแนวนอน แต่ฉันไม่สามารถหาวิธีจัดแนวตั้งได้ ฉันได้พยายามที่จะใช้align-items-centerและalign-self-centerแต่มันไม่ทำงาน

ฉันพลาดอะไรไป

การสาธิต

คำตอบ:


322

อัพเดท 2019 - Bootstrap 4.3.1

มีความจำเป็นสำหรับCSS พิเศษ สิ่งที่รวมอยู่ใน Bootstrap จะใช้งานได้ ตรวจสอบให้แน่ใจคอนเทนเนอร์ (s) ในรูปแบบที่มีความสูงเต็มรูปแบบ Bootstrap 4 ตอนนี้มีh-100คลาสสำหรับความสูง 100% ...

ศูนย์แนวตั้ง:

<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

ความสูงของคอนเทนเนอร์ที่มีรายการถึงกึ่งกลางควรเป็น 100% (หรือความสูงใด ๆ ที่ต้องการนั้นสัมพันธ์กับรายการกึ่งกลาง)

หมายเหตุ: เมื่อใช้height:100%( ความสูงร้อยละ ) ในองค์ประกอบใดองค์ประกอบเตะในความสูงของมันภาชนะ ในเบราว์เซอร์สมัยใหม่หน่วย vh height:100vh;สามารถใช้แทน%เพื่อให้ได้ความสูงที่ต้องการ

ดังนั้นคุณสามารถตั้งค่า HTML, body {ความสูง: 100%} หรือใช้ใหม่ชั้นบนบรรจุภัณฑ์แทนmin-vh-100h-100


ศูนย์แนวนอน:

  • text-centerไปที่display:inlineองค์ประกอบกลางและเนื้อหาคอลัมน์
  • mx-auto สำหรับการจัดกึ่งกลางภายในองค์ประกอบที่ยืดหยุ่น
  • offset-*หรือmx-autoสามารถใช้กับคอลัมน์กลาง ( .col-)
  • justify-content-centerถึงคอลัมน์กลาง ( col-*) ภายในrow

จัดแนวกึ่งกลางแนวตั้งใน Bootstrap 4
Bootstrap 4 แบบเต็มหน้าจอกึ่งกลาง
Bootstrap 4 กลุ่มอินพุตตรงกลาง
Bootstrap 4 แนวนอน + แนวตั้งกลางเต็มหน้าจอ


ตกลงหรือไม่ที่จะใช้<section>แท็กหรือหนึ่งควรจะติดกับ<div>s สำหรับการจัดกึ่งกลางเนื้อหาในแนวนอนและแนวตั้งในวิวพอร์ต? ฉันมีเว็บไซต์ที่มีหน้าซึ่งมีส่วนต่าง ๆ ที่เปลี่ยนสีและ / หรือภาพพื้นหลัง
เอเดรีย

ไม่ควรมีลูกโดยตรงของแถวเป็น. col หรือ
Miguel Stevens

7
คำตอบนี้หักเล็กน้อย คุณระบุอย่างชัดเจนว่า "ไม่ต้องใช้ CSS เพิ่มเติม" แต่นั่นผิด ในตัวอย่างโค้ดของคุณมันแสดงให้เห็นว่าคุณต้องตั้งค่า body และ html ให้เป็น 100% ใน CSS นอก Bootstrap 4 หากไม่มี CSS เพิ่มเติมนี้โซลูชันของคุณจะไม่ทำงาน
เมเจอร์เมเจอร์

1
ไม่เนื้อหาและ html ไม่ใช่ "นอก" .. คลาส Bootstrap CSS สามารถเพิ่มได้เช่นกัน! codeply.com/go/5ifNMHKUEy @dawn .. สิ่งที่ใช้ไม่ได้เป็นพิเศษ ความคิดเห็นของคุณไม่เป็นประโยชน์
ซิม

คอนเทนเนอร์ไม่ต้องการ 100% แต่ใช้h-100 justify-content-center align-items-centerงานได้
JMP

18

งานนี้สำหรับฉัน:

<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
อย่าลืมเพิ่มสไตล์ css:<style type="text/css"> html, body{ height: 100%; } .full-page{ height: 100vh; width: 100vw; } </style>
pyOwner


10

คุณต้องการบางสิ่งบางอย่างเพื่อจัดกึ่งกลางแบบฟอร์มของคุณ แต่เนื่องจากคุณไม่ได้ระบุความสูงสำหรับ html และเนื้อหาของคุณมันจะตัดเนื้อหา - ไม่ใช่วิวพอร์ต กล่าวอีกนัยหนึ่งไม่มีที่ว่างสำหรับจัดรายการให้อยู่ตรงกลาง

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

1
นอกจากนี้h-100คลาส util ยังสามารถใช้height:100%ใน Bootstrap 4
Zim

1
ตอนนี้ฉันแนะนำให้ใช้โซลูชันของ @ZimSystem เพราะไม่ต้องการ CSS ที่กำหนดเองและใช้ประโยชน์จากคลาสที่จัดเตรียมโดย Bootstrap เท่านั้น
Bram Vanroy

1
@BramVanroy ตามที่คุณบอกว่าฉันใช้โซลูชันของ ZimSystem แต่มันไม่ได้ผลสำหรับฉัน โซลูชันของคุณทำงานกับการอัปเดตทั้งเวอร์ชัน 4.0.0 และ 4.1.0 ด้วย
Sahan Pasindu Nirmal

9

Bootstrap มีศูนย์ข้อความเพื่อจัดข้อความให้อยู่กึ่งกลาง ตัวอย่างเช่น

<div class="container text-center">

คุณเปลี่ยนสิ่งต่อไปนี้

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

ต่อไปนี้

<div class="row text-center">

7

ไม่มีใครทำงานให้ฉัน แต่คนของเขาทำ

เนื่องจากคลาส Bootstrap 4 .row แสดงอยู่ในขณะนี้: เฟล็กคุณสามารถใช้ยูทิลิตี้ flexbox แบบจัดตำแหน่งตัวเองตรงกลางในคอลัมน์ใดก็ได้เพื่อจัดกึ่งกลางแนวตั้ง:

<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>

ฉันเรียนรู้เกี่ยวกับมันจากhttps://medium.com/wdstack/bootstrap-4-vertical-center-1211448a2eff


2

นี้จะทำงานในIE 11ที่มีเงินทุน4.3 ในขณะที่คำตอบอื่น ๆ ไม่ทำงานใน IE11 ในกรณีของฉัน

 <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

ฉันลงเอยที่นี่เพราะฉันมีปัญหากับระบบกริด Bootstrap 4 และลูป Angular * ngFor ฉันแก้ไขโดยใช้คลาส justify-content-center เพื่อ div ที่ใช้ 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>

ซึ่งให้ผลลัพธ์: ป้อนคำอธิบายรูปภาพที่นี่


0

จาก doc (bootsrap 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.