Sourceระบบกริด
ใช้ตาราง flexbox สำหรับอุปกรณ์พกพาที่มีประสิทธิภาพของเราเพื่อสร้างเลย์เอาต์ของรูปร่างและขนาดทั้งหมด ด้วยระบบสิบสองคอลัมน์ ระดับการตอบสนองเริ่มต้นห้าระดับ ตัวแปร Sass และมิกซ์อิน และคลาสที่กำหนดไว้ล่วงหน้าหลายสิบคลาส
ระบบกริดของ Bootstrap ใช้ชุดคอนเทนเนอร์ แถว และคอลัมน์เพื่อจัดวางและจัดแนวเนื้อหา สร้างขึ้นด้วยflexboxและตอบสนองได้อย่างเต็มที่ ด้านล่างนี้คือตัวอย่างและข้อมูลเชิงลึกว่ากริดมารวมกันได้อย่างไร
ใหม่หรือไม่คุ้นเคยกับ flexbox? อ่านคู่มือ CSS Tricks flexboxสำหรับพื้นหลัง คำศัพท์ แนวทางปฏิบัติ และข้อมูลโค้ด
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
ตัวอย่างข้างต้นสร้างคอลัมน์ที่มีความกว้างเท่ากันสามคอลัมน์บนอุปกรณ์ขนาดเล็ก กลาง ใหญ่ และใหญ่พิเศษโดยใช้คลาสกริดที่กำหนดไว้ล่วงหน้าของเรา คอลัมน์เหล่านั้นจะอยู่กึ่งกลางหน้ากับพา.container
เรนต์
แบ่งตามลักษณะการทำงาน:
- คอนเทนเนอร์ช่วยจัดวางเนื้อหาไซต์ของคุณให้อยู่ตรงกลางและแนวนอน ใช้
.container
สำหรับความกว้างของพิกเซลที่ตอบสนองหรือ.container-fluid
สำหรับwidth: 100%
วิวพอร์ตและอุปกรณ์ทุกขนาด
- แถวเป็นตัวตัดสำหรับคอลัมน์ แต่ละคอลัมน์มีแนวนอน
padding
(เรียกว่ารางน้ำ) สำหรับควบคุมช่องว่างระหว่างกัน สิ่งนี้padding
จะถูกตอบโต้ในแถวที่มีระยะขอบติดลบ ด้วยวิธีนี้ เนื้อหาทั้งหมดในคอลัมน์ของคุณจะถูกจัดชิดด้านซ้ายด้วยสายตา
- ในเลย์เอาต์กริด เนื้อหาต้องอยู่ในคอลัมน์และเฉพาะคอลัมน์เท่านั้นที่อาจเป็นรายการย่อยของแถว
- ต้องขอบคุณ flexbox คอลัมน์กริดที่ไม่มีการระบุ
width
จะจัดวางเป็นคอลัมน์ที่มีความกว้างเท่ากันโดยอัตโนมัติ ตัวอย่างเช่น สี่อินสแตนซ์ของ.col-sm
will แต่ละรายการจะมีความกว้างโดยอัตโนมัติ 25% จากเบรกพอยต์ขนาดเล็กขึ้นไป ดู ส่วน คอลัมน์เค้าโครงอัตโนมัติสำหรับตัวอย่างเพิ่มเติม
- คลาสคอลัมน์ระบุจำนวนคอลัมน์ที่คุณต้องการใช้จากจำนวนที่เป็นไปได้ 12 คอลัมน์ต่อแถว ดังนั้น ถ้าคุณต้องการคอลัมน์ที่มีความกว้างเท่ากันสามคอลัมน์ คุณสามารถใช้
.col-4
.
- คอลัมน์
width
ถูกกำหนดเป็นเปอร์เซ็นต์ ดังนั้นจึงเป็นแบบไหลและขนาดสัมพันธ์กับองค์ประกอบหลักเสมอ
- คอลัมน์มีแนวนอน
padding
เพื่อสร้างรางน้ำระหว่างคอลัมน์แต่ละคอลัมน์ อย่างไรก็ตาม คุณสามารถลบออกmargin
จากแถวและpadding
ออกจากคอลัมน์ด้วย.no-gutters
บน.row
- ในการทำให้กริดตอบสนองได้ มีเบรกพอยต์กริดห้าจุด หนึ่ง จุดต่อเบรกพอยต์ที่ ตอบสนองแต่ละจุด : เบรกพอยต์ทั้งหมด (เล็กพิเศษ) เล็ก กลาง ใหญ่ และใหญ่พิเศษ
- เบรกพอยต์ของกริดอ้างอิงจากการสืบค้นสื่อความกว้างขั้นต่ำ ซึ่งหมายความว่าจะใช้กับเบรกพอยต์นั้นและทั้งหมดที่อยู่ด้านบนนั้น (เช่น
.col-sm-4
ใช้กับอุปกรณ์ขนาดเล็ก กลาง ใหญ่ และขนาดใหญ่พิเศษ แต่ไม่ใช่xs
เบรกพอยต์แรก)
- คุณสามารถใช้คลาสกริดที่กำหนดไว้ล่วงหน้า (เช่น
.col-4
) หรือมิกซ์อิน Sassสำหรับมาร์กอัปเชิงความหมายเพิ่มเติม
ระวังข้อจำกัดและข้อบกพร่องของ flexboxเช่น การไม่สามารถใช้องค์ประกอบ HTML บางอย่างเป็นคอนเทนเนอร์แบบยืดหยุ่นได้
ในขณะที่ Bootstrap ใช้em
s หรือrem
s เพื่อกำหนดขนาดส่วนใหญ่ แต่px
s จะใช้สำหรับจุดหยุดกริดและความกว้างของคอนเทนเนอร์ เนื่องจากความกว้างของวิวพอร์ตเป็นพิกเซลและไม่เปลี่ยนแปลงตามขนาดฟอนต์
ดูว่าแง่มุมต่างๆ ของระบบกริด Bootstrap ทำงานอย่างไรในอุปกรณ์หลายเครื่องด้วยตารางที่ใช้งานสะดวก
|
เล็กพิเศษ <576px |
เล็ก ≥576px |
กลาง ≥768px |
ใหญ่ ≥992px |
ขนาดใหญ่พิเศษ ≥1200px |
ความกว้างคอนเทนเนอร์สูงสุด |
ไม่มี (อัตโนมัติ) |
540px |
720px |
960px |
1140px |
คำนำหน้าชั้นเรียน |
.col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
# ของคอลัมน์ |
12 |
ความกว้างของรางน้ำ |
30px (15px ในแต่ละด้านของคอลัมน์) |
Nestable |
ใช่ |
การเรียงลำดับคอลัมน์ |
ใช่ |
ใช้คลาสคอลัมน์เฉพาะจุดพักเพื่อให้ปรับขนาดคอลัมน์ได้ง่ายโดยไม่ต้องมีคลาสที่มีตัวเลขชัดเจน เช่น.col-sm-6
.
ตัวอย่างเช่น นี่คือเค้าโครงตารางสองแบบที่ใช้กับทุกอุปกรณ์และวิวพอร์ต จากxs
เป็นxl
. เพิ่มคลาสที่ไม่มีหน่วยจำนวนเท่าใดก็ได้สำหรับแต่ละเบรกพอยต์ที่คุณต้องการ และทุกคอลัมน์จะมีความกว้างเท่ากัน
คอลัมน์ที่มีความกว้างเท่ากันสามารถแบ่งออกเป็นหลายบรรทัด แต่มีข้อบกพร่องของ Safari flexboxที่ป้องกันไม่ให้ทำงานโดยไม่มีflex-basis
ไฟล์border
. มีวิธีแก้ปัญหาสำหรับเบราว์เซอร์เวอร์ชันเก่า แต่ไม่จำเป็นหากคุณเป็นเวอร์ชันล่าสุด
คอลัมน์
คอลัมน์
คอลัมน์
คอลัมน์
การตั้งค่าความกว้างหนึ่งคอลัมน์
เค้าโครงอัตโนมัติสำหรับคอลัมน์กริด flexbox ยังหมายความว่าคุณสามารถกำหนดความกว้างของคอลัมน์หนึ่งและให้คอลัมน์พี่น้องปรับขนาดรอบคอลัมน์โดยอัตโนมัติได้ คุณสามารถใช้คลาสกริดที่กำหนดไว้ล่วงหน้า (ดังที่แสดงด้านล่าง) กริดมิกซ์อิน หรือความกว้างแบบอินไลน์ โปรดทราบว่าคอลัมน์อื่นๆ จะปรับขนาดไม่ว่าความกว้างของคอลัมน์กลางจะเป็นเท่าใด
1 จาก 3
2 จาก 3 (กว้างขึ้น)
3 จาก 3
1 จาก 3
2 จาก 3 (กว้างขึ้น)
3 จาก 3
ใช้col-{breakpoint}-auto
คลาสเพื่อปรับขนาดคอลัมน์ตามความกว้างตามธรรมชาติของเนื้อหา
1 จาก 3
เนื้อหาความกว้างตัวแปร
3 จาก 3
1 จาก 3
เนื้อหาความกว้างตัวแปร
3 จาก 3
หลายแถวที่มีความกว้างเท่ากัน
สร้างคอลัมน์ที่มีความกว้างเท่ากันซึ่งขยายหลายแถวโดยแทรก.w-100
ตำแหน่งที่คุณต้องการให้คอลัมน์แตกไปยังบรรทัดใหม่ ทำให้ตัวแบ่งตอบสนองโดยการผสม กับ ยูทิลิตีการแสดงผลที่ตอบสนอง.w-100
บางอย่าง
ตารางของ Bootstrap ประกอบด้วยคลาสที่กำหนดไว้ล่วงหน้าห้าระดับสำหรับการสร้างเลย์เอาต์ที่ตอบสนองที่ซับซ้อน ปรับแต่งขนาดคอลัมน์ของคุณบนอุปกรณ์ขนาดเล็กพิเศษ เล็ก กลาง ใหญ่ หรือใหญ่พิเศษตามที่คุณต้องการ
สำหรับกริดที่เหมือนกันจากอุปกรณ์ที่เล็กที่สุดไปจนถึงใหญ่ที่สุด ให้ใช้คลาส.col
และ .col-*
ระบุคลาสที่มีตัวเลขเมื่อคุณต้องการคอลัมน์ที่มีขนาดเฉพาะ .col
มิฉะนั้น อย่าลังเลที่จะติด
การใช้คลาสชุดเดียว.col-sm-*
คุณสามารถสร้างระบบกริดพื้นฐานที่เริ่มต้นจากสแต็กและกลายเป็นแนวนอนที่เบรกพอยต์ขนาดเล็ก ( sm
)
ไม่ต้องการให้คอลัมน์ของคุณซ้อนกันในระดับกริดบางระดับใช่หรือไม่ ใช้คลาสต่างๆ รวมกันสำหรับแต่ละระดับตามต้องการ ดูตัวอย่างด้านล่างสำหรับแนวคิดที่ดีขึ้นเกี่ยวกับวิธีการทำงานทั้งหมด
.col-12 .col-md-8
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
ใช้ยูทิลิตี้การจัดตำแหน่ง flexbox เพื่อจัดแนวคอลัมน์ในแนวตั้งและแนวนอน
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสามคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
หนึ่งในสองคอลัมน์
รางน้ำระหว่างคอลัมน์ในคลาสกริดที่กำหนดไว้ล่วงหน้าของเราสามารถลบออกได้ด้วย.no-gutters
. สิ่งนี้จะลบค่าลบmargin
ออกจาก.row
และแนวนอนpadding
ออกจากคอลัมน์ลูกที่อยู่ติดกันทั้งหมด
นี่คือซอร์สโค้ดสำหรับสร้างสไตล์เหล่านี้ โปรดทราบว่าการแทนที่คอลัมน์จะกำหนดขอบเขตเฉพาะคอลัมน์ย่อยแรกและกำหนดเป้าหมายผ่านตัวเลือกแอตทริบิวต์ แม้ว่าสิ่งนี้จะสร้างตัวเลือกเฉพาะเจาะจงมากขึ้น แต่การแพ็ดคอลัมน์ยังคงสามารถปรับแต่งเพิ่มเติมได้ด้วย ยูทิลิตี้ การเว้นวรรค
ต้องการการออกแบบที่ล้ำสมัยหรือไม่? วางผู้ปกครอง.container
หรือ.container-fluid
.
ในทางปฏิบัติมีลักษณะดังนี้ โปรดทราบว่าคุณสามารถใช้สิ่งนี้กับคลาสกริดที่กำหนดไว้ล่วงหน้าอื่นๆ ทั้งหมดได้ (รวมถึงความกว้างของคอลัมน์ ระดับที่ตอบสนอง การเรียงลำดับใหม่ และอื่นๆ)
.col-12 .col-sm-6 .col-md-8
.col-6 .col-md-4
หากวางมากกว่า 12 คอลัมน์ภายในแถวเดียว กลุ่มของคอลัมน์พิเศษแต่ละกลุ่มจะรวมเป็นหนึ่งหน่วยในบรรทัดใหม่
.col-9
.col-4
เนื่องจาก 9 + 4 = 13 > 12 div ทั้ง 4 คอลัมน์นี้จึงถูกรวมไว้ในบรรทัดใหม่เป็นหน่วยที่ต่อเนื่องกัน
.col-6
คอลัมน์ที่ตามมาจะดำเนินต่อไปในบรรทัดใหม่
การแบ่งคอลัมน์เป็นบรรทัดใหม่ใน flexbox จำเป็นต้องมีการแฮ็กเล็กน้อย: เพิ่มองค์ประกอบด้วยwidth: 100%
ทุกที่ที่คุณต้องการรวมคอลัมน์ของคุณไว้ในบรรทัดใหม่ โดยปกติสามารถทำได้ด้วยหลาย ๆ.row
s แต่ไม่ใช่ทุกวิธีการใช้งานที่สามารถอธิบายได้
.col-6 .col-sm-3
.col-6 .col-sm-3
.col-6 .col-sm-3
.col-6 .col-sm-3
คุณยังสามารถใช้ตัวแบ่งนี้ที่จุดสั่งหยุดเฉพาะด้วยยูทิลิตีการแสดงผลที่ตอบสนองของ เรา
.col-6 .col-sm-4
.col-6 .col-sm-4
.col-6 .col-sm-4
.col-6 .col-sm-4
ใช้.order-
คลาสเพื่อควบคุมลำดับภาพของเนื้อหาของคุณ คลาสเหล่านี้ตอบสนองได้ ดังนั้นคุณสามารถตั้งค่าorder
ตามจุดพัก (เช่น.order-1.order-md-2
) รวมการสนับสนุน1
ผ่าน12
ระดับกริดทั้งห้า
ครั้งแรก แต่ไม่เป็นระเบียบ
ประการที่สอง แต่สุดท้าย
ประการที่สาม แต่ก่อน
นอกจากนี้ยังมีการตอบสนอง.order-first
และ.order-last
คลาสที่เปลี่ยนorder
องค์ประกอบโดยใช้order: -1
และorder: 13
( order: $columns + 1
) ตามลำดับ คลาสเหล่านี้ยังสามารถผสมกับ.order-*
คลาสที่มีหมายเลขได้ตามต้องการ
ครั้งแรกแต่สุดท้าย
ประการที่สอง แต่ไม่เป็นระเบียบ
ประการที่สาม แต่ก่อน
คุณสามารถออฟเซ็ตคอลัมน์กริดได้สองวิธี: .offset-
คลาสกริดที่ตอบสนองของเรา และยูทิลิตี้มาร์ จิ้นของเรา คลาสกริดมีขนาดให้ตรงกับคอลัมน์ในขณะที่ระยะขอบมีประโยชน์มากกว่าสำหรับเลย์เอาต์ด่วนที่ความกว้างของออฟเซ็ตเป็นตัวแปร
ย้ายคอลัมน์ไปทางขวาโดยใช้.offset-md-*
คลาส ชั้นเรียนเหล่านี้เพิ่มระยะขอบด้านซ้ายของคอลัมน์ทีละ*
คอลัมน์ ตัวอย่างเช่น.offset-md-4
ย้าย.col-md-4
มากกว่าสี่คอลัมน์
.col-md-4
.col-md-4 .offset-md-4
.col-md-3 .offset-md-3
.col-md-3 .offset-md-3
นอกจากการล้างคอลัมน์ที่จุดสั่งหยุดแบบตอบสนองแล้ว คุณอาจต้องรีเซ็ตออฟเซ็ตด้วย ดูการดำเนินการนี้ในตัวอย่างกริด
.col-sm-5 .col-md-6
.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0
.col-sm-6 .col-md-5 .col-lg-6
.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0
เมื่อย้ายไปที่ flexbox ใน v4 คุณสามารถใช้ยูทิลิตี้มาร์จิ้น เช่น.mr-auto
บังคับให้คอลัมน์พี่น้องออกจากกัน
.col-md-4
.col-md-4 .ml-auto
.col-md-3 .ml-md-auto
.col-md-3 .ml-md-auto
.col-auto .mr-auto
.col-auto
หากต้องการซ้อนเนื้อหาของคุณด้วยกริดเริ่มต้น ให้เพิ่มคอลัมน์ใหม่.row
และชุดของ.col-sm-*
คอลัมน์ภายในคอลัมน์ที่มี.col-sm-*
อยู่ แถวที่ซ้อนกันควรมีชุดของคอลัมน์ที่รวมกันได้ไม่เกิน 12 คอลัมน์ (คุณไม่จำเป็นต้องใช้คอลัมน์ที่มีอยู่ทั้งหมด 12 คอลัมน์)
ระดับ 1: .col-sm-9
ระดับ 2: .col-8 .col-sm-6
ระดับ 2: .col-4 .col-sm-6
เมื่อใช้ไฟล์ Sass ต้นทางของ Bootstrap คุณมีตัวเลือกในการใช้ตัวแปร Sass และมิกซ์อินเพื่อสร้างเค้าโครงหน้าแบบกำหนดเอง ความหมาย และแบบตอบสนอง คลาสกริดที่กำหนดไว้ล่วงหน้าของเราใช้ตัวแปรและมิกซ์อินเดียวกันเหล่านี้เพื่อจัดเตรียมคลาสที่พร้อมใช้งานทั้งชุดสำหรับเลย์เอาต์ที่ตอบสนองอย่างรวดเร็ว
ตัวแปรและแผนที่กำหนดจำนวนคอลัมน์ ความกว้างของรางน้ำ และจุดสอบถามสื่อที่จะเริ่มต้นคอลัมน์แบบลอย เราใช้สิ่งเหล่านี้เพื่อสร้างคลาสกริดที่กำหนดไว้ล่วงหน้าที่บันทึกไว้ด้านบน เช่นเดียวกับมิกซ์อินแบบกำหนดเองที่แสดงด้านล่าง
ใช้มิกซ์อินร่วมกับตัวแปรกริดเพื่อสร้าง CSS เชิงความหมายสำหรับคอลัมน์กริดแต่ละคอลัมน์
คุณสามารถแก้ไขตัวแปรให้เป็นค่าที่คุณกำหนดเอง หรือเพียงแค่ใช้มิกซ์อินกับค่าเริ่มต้นของพวกมัน ต่อไปนี้คือตัวอย่างการใช้การตั้งค่าเริ่มต้นเพื่อสร้างเค้าโครงแบบสองคอลัมน์โดยมีช่องว่างระหว่าง
การใช้ตัวแปร Sass แบบกริดและแผนที่ในตัวของเรา ทำให้สามารถปรับแต่งคลาสกริดที่กำหนดไว้ล่วงหน้าได้อย่างสมบูรณ์ เปลี่ยนจำนวนชั้น มิติคิวรีสื่อ และความกว้างคอนเทนเนอร์—จากนั้นคอมไพล์ใหม่
จำนวนคอลัมน์กริดสามารถแก้ไขได้โดยใช้ตัวแปร Sass $grid-columns
ใช้เพื่อสร้างความกว้าง (เป็นเปอร์เซ็นต์) ของแต่ละคอลัมน์ในขณะที่$grid-gutter-width
กำหนดความกว้างสำหรับรางน้ำของคอลัมน์
คุณยังสามารถปรับแต่งจำนวนชั้นกริดได้อีกด้วย หากคุณต้องการเพียงสี่ระดับกริด คุณจะต้องอัปเดต$grid-breakpoints
และ$container-max-widths
เป็นดังนี้:
เมื่อทำการเปลี่ยนแปลงใดๆ กับตัวแปร Sass หรือแผนที่ คุณจะต้องบันทึกการเปลี่ยนแปลงและคอมไพล์ใหม่ การทำเช่นนั้นจะสร้างชุดคลาสกริดที่กำหนดไว้ล่วงหน้าชุดใหม่สำหรับความกว้างของคอลัมน์ ออฟเซ็ต และการจัดลำดับ ยูทิลิตี้การมองเห็นที่ตอบสนองจะได้รับการอัปเดตเพื่อใช้เบรกพอยต์ที่กำหนดเอง ตรวจสอบให้แน่ใจว่าได้ตั้งค่ากริดในpx
(ไม่ใช่rem
, em
, หรือ%
)