สิ่งสำคัญ! แนวตั้งศูนย์กลางสัมพันธ์กับความสูงของผู้ปกครอง
ถ้าแม่ขององค์ประกอบที่คุณกำลังพยายามที่จะได้กำหนดศูนย์ไม่มี
ความสูง , ไม่มีของการแก้ปัญหาแนวตั้งตรงกลางจะทำงาน!
ตอนนี้เข้าสู่ศูนย์กลางแนวตั้งใน Bootstrap 4 ...
คุณสามารถใช้ใหม่flexbox และขนาดสาธารณูปโภคที่จะทำให้เต็มความสูงและcontainer
display: flex
ตัวเลือกเหล่านี้ไม่ต้องการ CSS เพิ่มเติม (ยกเว้นความสูงของคอนเทนเนอร์ (เช่น: html, body) ต้องเป็น 100% )
ตัวเลือก 1 align-self-center
บนเฟล็กบ็อกซ์ลูก
<div class="container d-flex h-100">
<div class="row justify-content-center align-self-center">
I'm vertically centered
</div>
</div>
https://www.codeply.com/go/fFqaDe5Oey
ตัวเลือก 2 align-items-center
บนพาเรนต์ flexbox ( .row
คือdisplay:flex; flex-direction:row
)
<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="jumbotron">
I'm vertically centered
</div>
</div>
</div>
</div>
https://www.codeply.com/go/BumdFnmLuk
ตัวเลือก 3 justify-content-center
บนพาเรนต์ flexbox ( .card
คือdisplay:flex;flex-direction:column
)
<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="card h-100 border-primary justify-content-center">
<div>
...card content...
</div>
</div>
</div>
</div>
</div>
https://www.codeply.com/go/3gySSEe7nd
ข้อมูลเพิ่มเติมเกี่ยวกับ Bootstrap 4 แนวตั้งตรงกลาง
ตอนนี้ Bootstrap 4 เสนอ flexbox และยูทิลิตี้อื่น ๆมีหลายวิธีในการจัดแนวตั้ง http://www.codeply.com/go/WG15ZWC4lf
1 - ศูนย์แนวตั้งโดยใช้ระยะขอบอัตโนมัติ:
my-auto
วิธีการศูนย์แนวตั้งก็คือการใช้ สิ่งนี้จะทำให้องค์ประกอบอยู่ตรงกลางภายในคอนเทนเนอร์ ตัวอย่างเช่นh-100
ทำให้แถวมีความสูงเต็มและmy-auto
จะจัดแนวcol-sm-12
คอลัมน์เป็นแนวตั้ง
<div class="row h-100">
<div class="col-sm-12 my-auto">
<div class="card card-block w-25">Card</div>
</div>
</div>
ศูนย์แนวตั้งโดยใช้การสาธิตระยะขอบอัตโนมัติ
my-auto
แสดงระยะขอบบนแกน y ในแนวตั้งและเทียบเท่ากับ:
margin-top: auto;
margin-bottom: auto;
2 - ศูนย์แนวตั้งพร้อม Flexbox:
เนื่องจาก Bootstrap 4 .row
เป็นตอนนี้display:flex
คุณสามารถใช้align-self-center
ในคอลัมน์ใดก็ได้เพื่อจัดกึ่งกลางแนวตั้ง ...
<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>
หรือใช้align-items-center
ทั้งหมด.row
เพื่อจัดกึ่งกลางแนวตั้งทั้งหมดcol-*
ในแถว ...
<div class="row align-items-center">
<div class="col-6">
<div class="card card-block">
Center
</div>
</div>
<div class="col-6">
<div class="card card-inverse card-danger">
Taller
</div>
</div>
</div>
การสาธิตคอลัมน์แนวตั้งศูนย์ความสูงต่าง ๆ
ดู Q / A นี้เพื่อศูนย์ แต่รักษาความสูงเท่ากัน
3 - ศูนย์กลางแนวตั้งโดยใช้ประโยชน์จากการแสดงผล:
Bootstrap 4 มีutils จอแสดงผลที่สามารถนำมาใช้สำหรับdisplay:table
, display:table-cell
, display:inline
ฯลฯ .. เหล่านี้สามารถใช้กับutils แนวตั้งที่จะจัดแบบอินไลน์, อินไลน์บล็อกหรือตารางองค์ประกอบของเซลล์
<div class="row h-50">
<div class="col-sm-12 h-100 d-table">
<div class="card card-block d-table-cell align-middle">
I am centered vertically
</div>
</div>
</div>
ศูนย์แนวตั้งโดยใช้การสาธิตการใช้ประโยชน์ดิสเพลย์
ตัวอย่างเพิ่มเติม
ภาพกึ่งกลางแนวตั้งใน<div>
แนวตั้งกึ่งกลาง .row ใน. ตัว
ตั้งกึ่งกลางแนวตั้งและด้านล่างใน<div>
แนวตั้งกึ่งกลางลูกในแม่
แนวตั้งกึ่งกลางแนวตั้งแบบเต็มหน้าจอ jumbotron
สิ่งสำคัญ! ฉันพูดถึงส่วนสูงหรือไม่
จำไว้ว่าการตั้งกึ่งกลางแนวตั้งนั้นสัมพันธ์กับความสูงขององค์ประกอบหลัก หากคุณต้องการให้อยู่กึ่งกลางหน้าทั้งหมดโดยส่วนใหญ่ควรเป็น CSS ของคุณ ...
body,html {
height: 100%;
}
หรือใช้min-height: 100vh
( min-vh-100
ใน Bootstrap 4.1+) บนพาเรนต์ / คอนเทนเนอร์ หากคุณต้องการจัดองค์ประกอบของลูกให้อยู่กึ่งกลางภายในพาเรนต์ ผู้ปกครองจะต้องมีการกำหนดความสูง
ดูเพิ่มเติมได้ที่:
การจัดแนวดิ่งใน bootstrap 4
Bootstrap 4 ศูนย์การจัดแนวตั้งและแนวนอน