การ์ดบูตสแตรป
การ์ด Bootstrap เป็นหนึ่งในส่วนประกอบที่ได้รับความนิยมมากที่สุดและด้วยเหตุผลที่ดี พวกมันทำหน้าที่เป็นที่เก็บสื่อที่ยืดหยุ่นมาก และมีสไตล์และการจัดรูปแบบที่ตั้งไว้ล่วงหน้าที่ดี
เนื้อหาในการ์ดอาจเป็นอะไรก็ได้ตั้งแต่ข้อความ รูปภาพ ลิงก์ ปุ่ม รายการ และยังสามารถมีส่วนหัวและส่วนท้ายได้อีกด้วย
ข้อมูลเบื้องต้นเกี่ยวกับการ์ดบู๊ตสแตรป
การ์ด Bootstrap สร้างด้วย flexbox และขยายเป็นความกว้างขององค์ประกอบที่มีอยู่ตามค่าเริ่มต้น หากเราต้องการระบุความกว้างที่แตกต่างกัน เราสามารถใช้คลาสยูทิลิตี้ความกว้างของ Bootstrap บนองค์ประกอบการ์ดเอง หรือเราสามารถห่อการ์ดในองค์ประกอบที่มี และปรับขนาดด้วยคลาสคอลัมน์ของ Bootstrap
มาดูตัวอย่างกัน:
<div class="container-fluid bg-light"> <div class="card p-4 m-4">card 1</div> <div class="card p-4 m-4">card 2</div> <div class="card p-4 m-4">card 3</div> <div class="card-group m-4"> <div class="card p-4">card 4</div> <div class="card p-4">card 5</div> <div class="card p-4">card 6</div> </div> <div class="card-deck m-4"> <div class="card p-4 m-4">card 7</div> <div class="card p-4 m-4">card 8</div> <div class="card p-4 m-4">card 9</div> </div> </div>
หลักการง่ายๆ ของ Bootstrap คือการรวมทุกอย่างที่อยู่ภายใน
ไว้ในองค์ประกอบ CONTAINER ซึ่งทำให้ทุกอย่างภายในตอบสนองได้
นั่นหมายความว่ามันจะเปลี่ยนขนาดและเลย์เอาต์ตามขนาดหน้าจอปัจจุบัน
ในตัวอย่างของเรา เราใช้ CONTAINER-FLUID ซึ่งทำให้องค์ประกอบเต็มความกว้าง แทนที่จะใช้แค่ CONTAINER ซึ่งเพิ่มระยะขอบแนวนอนและจัดกึ่งกลางในหน้า
ต่อไป เรามีไพ่สามใบชุดแรก ไม่มีองค์ประกอบหลักอื่นนอกเหนือจากคอนเทนเนอร์ ดังนั้นพวกเขาจึงมีลักษณะการทำงานของการ์ดเริ่มต้น และจัดเรียงจากบนลงล่างตามที่เราเห็นในภาพหน้าจอ:
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
p-4 และ m-4 ที่คุณเห็นในข้อมูลโค้ดแสดงถึงช่องว่างภายในทุกด้านของ 1.5 rem และระยะขอบทุกด้านของ 1.5 rem ตามลำดับ
ค่ายูทิลิตี้การปรับขนาด Bootstrap:
0 =0 rem;
1 =0.25 เร็ม;
2 =0.5 เร็ม;
3 =1 เร็ม;
4 =1.5 เร็ม;
5 =3 เร็ม;
จากนั้นเราก็มีไพ่ 4, 5 และ 6 ซึ่งรวมอยู่ใน
สุดท้าย การ์ด 7, 8 และ 9 ถูกรวมไว้ใน
การปรับขนาดการ์ดด้วยตนเอง
ก่อนที่เราจะทำการปรับขนาดการ์ดด้วยตนเอง มาเรียนรู้เล็กน้อยเกี่ยวกับเลย์เอาต์และระบบเบรกพอยต์ของ Bootstrap
คอลัมน์บูตสแตรป
Bootstrap แบ่งหน้าออกเป็น 12 คอลัมน์เพื่อให้ง่ายต่อการพัฒนาเลย์เอาต์
ต่อไปนี้คือตัวอย่างสั้นๆ เพื่อให้เห็นภาพ:
<div class="row"> <div class="col border p-5">column 1</div> <div class="col border p-5">column 2</div> <div class="col border p-5">column 3</div> <div class="col border p-5">column 4</div> <div class="col border p-5">column 5</div> <div class="col border p-5">column 6</div> <div class="col border p-5">column 7</div> <div class="col border p-5">column 8</div> <div class="col border p-5">column 9</div> <div class="col border p-5">column 10</div> <div class="col border p-5">column 11</div> <div class="col border p-5">column 12</div> </div>
อันดับแรก เรามีเสื้อคลุมสำหรับคอลัมน์ที่เรียกว่า ROW ซึ่งเป็นเพียงคอนเทนเนอร์ flexbox สำหรับพวกเขา เราประกาศขนาดขององค์ประกอบโดยการเขียน COL-SCREEN SIZE BREAKPOINT-NUMBER OF COLUMNS TO OCCUPY
ในตัวอย่างข้างต้น เราไม่ได้ระบุเบรกพอยต์เพราะเราต้องการปรับขนาดนี้ไม่ว่าหน้าจอจะเป็นขนาดใด และไม่มีคอลัมน์จำนวนเท่าใด เนื่องจากละเว้นค่าเริ่มต้นเป็น COL-1 ดังนั้นเราจึงได้ 12 คอลัมน์ที่เป็นธรรมชาติ นี่คือสิ่งที่ดูเหมือน:
บูทสแตรปเบรกพอยต์:
Bootstrap เป็นเฟรมเวิร์กสำหรับมือถือก่อน หมายความว่าเมื่อพัฒนาด้วย Bootstrap คุณจะจัดลำดับความสำคัญของเลย์เอาต์มือถือและทำงานให้สูงขึ้น คลาสทั้งหมดมีผลกับองค์ประกอบตั้งแต่เบรกพอยต์ที่มีให้ขึ้นไป
ค่าดีฟอลต์ที่เล็กมากคือค่าดีฟอลต์ ดังนั้นการละเว้นจุดพักอย่างสมบูรณ์ เช่น P-4 จะเหมือนกับการเขียน P-XS-4 ซึ่งจะนำไปใช้กับขนาดหน้าจอ XS และอันที่ใหญ่กว่าทั้งหมด
กล่าวอีกนัยหนึ่ง ถ้าคุณต้องการกฎที่มีผลกับทุกหน้าจอ เพียงข้ามเบรกพอยต์
หากเราต้องการลดช่องว่างภายในจากตัวอย่างเป็น 0.5 rem จากขนาดหน้าจอขนาดกลางขึ้นไป เราจะเพิ่มคลาส P-MD-2 ในองค์ประกอบเดียวกัน
ค่าพิกเซลเบรกพอยต์:
- xs – ขนาดหน้าจอต่ำกว่า 576 พิกเซล นี่คือค่าเริ่มต้น
- sm – ขนาดหน้าจอตั้งแต่ 576 พิกเซลขึ้นไป
- md – ขนาดหน้าจอตั้งแต่ 768 พิกเซลขึ้นไป
- lg – ขนาดหน้าจอตั้งแต่ 992 พิกเซลขึ้นไป
- xl – ขนาดหน้าจอตั้งแต่ 1200 พิกเซลขึ้นไป
ลองใช้สิ่งนี้เพื่อเปลี่ยนเลย์เอาต์ของเราตามขนาดหน้าจอ:
<div class="row"> <div class="col-5 col-md-7"> <div class="card p-4">left column card</div> <div class="card p-4">left column card</div> <div class="card p-4">left column card</div> <div class="card p-4">left column card</div> </div> <div class="col-7 col-md-5"> <div class="card p-4">right column card</div> <div class="card p-4">right column card</div> <div class="card p-4">right column card</div> <div class="card p-4">right column card</div> </div> </div>
อีกครั้ง เรามี ROW wrapper จากนั้น
ความกว้าง 767 พิกเซล
เราขึ้นไป 1 พิกเซลเป็น 768 และพวกมันเปลี่ยนเป็นตรงกันข้าม:
ส่วนประกอบย่อยของการ์ด
มาลองใช้พลังของการ์ดอย่างเต็มที่โดยลองใช้ส่วนประกอบย่อยทั้งหมด
การ์ดที่มีส่วนหัวและส่วนท้าย
<div class="card"> <div class="card-header text-center p-4">I'm a header</div> <div class="card-body"> <p class="card-text"> first paragraph </p> <p class="card-text"> second paragraph </p> <a href="#" class="card-link">Link 1</a> <a href="#" class="card-link">Link 2</a> <a href="#" class="card-link">Link 3</a> </div> <div class="card-footer"> Footer of a Bootstrap card </div> </div>
เราได้สร้างการ์ดที่มีส่วนหัวของการ์ดอยู่ตรงกลาง ซึ่งมีเส้นขอบและพื้นหลังสีเทาอ่อน และตัวการ์ดด้านล่าง ซึ่งทำให้มีช่องว่างภายใน
ในส่วนเนื้อหา เรามีย่อหน้าที่มี CARD-TEXT สองสามย่อหน้าสำหรับการจัดแนว และบางลิงก์กับ CARD-LINK จึงเป็นสีฟ้าและวางชิดกัน
ในตอนท้าย เราสร้างส่วนท้ายของการ์ดซึ่งมีรูปแบบเหมือนกับส่วนหัว แต่ครั้งนี้ไม่ได้จัดกึ่งกลางข้อความ
การ์ดพร้อมฝาปิดรูปภาพ
ครั้งนี้ เราจะเพิ่มภาพแคปให้กับการ์ด ชื่อและคำบรรยายให้กับเนื้อหาของการ์ด และกลุ่มรายการที่มีลิงก์เป็นรายการ:
<div class="card"> <img src="https://via.placeholder.com/100" alt="" class="card-img-top" /> <div class="card-body"> <h3 class="card-title">card title in the card's body</h3> <h4 class="card-subtitle mb-4">card subtitle</h4> <p>list group with links inside:</p> <ul class="list-group"> <li class="list-group-item"> <a href="#" class="card-link">List link 1</a> </li> <li class="list-group-item"> <a href="#" class="card-link">List link 2</a> </li> <li class="list-group-item"> <a href="#" class="card-link">List link 3</a> </li> </ul> </div> </div>
ฉันใช้เครื่องมือที่สะดวกมากสำหรับรูปภาพที่เรียกว่าตัวยึดตำแหน่ง ตัวเลขที่อยู่ท้ายสุดคือความกว้างพิกเซล x ความสูงของภาพ แต่ค่านี้จะถูกละเว้นเมื่อ CARD-IMG-TOP ขยาย (หรือย่อ) ภาพให้เต็มความกว้างของการ์ด ชื่อเรื่องและคำบรรยายมีการจัดรูปแบบที่ดีและเราใช้ยูทิลิตี้การวางแนวของ Bootstrap สำหรับการเว้นและระยะขอบ MB-4 ที่คุณเห็นในคำบรรยายหมายถึงขอบด้านล่าง
การเว้นระยะขอบรองเท้าและการวางแนวขอบ:
- pt/mt – padding/margin top
- pb/mb – padding/margin bottom
- pl/ml – padding/margin left
- pr/mr – padding/margin right
- py/my – padding/margin แกน y (บนและล่าง)
- px/mx – padding/margin x axis (ซ้ายและขวา)
จากนั้นเราก็มีกลุ่มรายการซึ่งห่อหุ้มรายการอีกครั้งและเป็นองค์ประกอบแต่ละองค์ประกอบที่มีเส้นขอบโค้งมนสีอ่อน นี่คือผลลัพธ์ของเรา:
ฝาปิดรูปภาพด้านล่าง
ไม่มี CARD-IMG-BOTTOM ในบูตสแตรป แต่เราสามารถ "ปลอม" สิ่งนี้ได้อย่างง่ายดายโดยสร้าง div ที่ด้านล่างของการ์ดและวาง
<div class="card"> <div class="card-body"> <p class="card-text"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Quas unde corporis sed nam ad eius, pariatur, consectetur modi asperiores dolorem id quaerat eos quod nesciunt repudiandae aut temporibus rerum possimus. </p> </div> <img src="https://via.placeholder.com/100" alt="" class="card-img-top" /> </div>
ฉันยังเพิ่ม lorem ipsum แบบเก่าที่ดีสำหรับการวัดที่ดี
ฝาปิดรูปภาพด้านข้าง
นอกจากนี้เรายังสามารถทำให้เป็นแนวนอนได้ด้วยการเพิ่ม ROW wrapper ภายในการ์ดของเราเพื่อจัดวางในแนวนอน จากนั้นใช้ COL เพื่อกำหนดขนาดของภาพและส่วนที่เหลือของการ์ด:
<div class="card"> <div class="row"> <img src="https://via.placeholder.com/100" alt="" class="card-img-top col-6" /> <div class="card-body col-6"> <h3 class="card-title">card title in the card's body</h3> <h4 class="card-subtitle mb-4">card subtitle</h4> <p>list group with links inside:</p> <ul class="list-group"> <li class="list-group-item"> <a href="#" class="card-link">List link 1</a> </li> <li class="list-group-item"> <a href="#" class="card-link">List link 2</a> </li> <li class="list-group-item"> <a href="#" class="card-link">List link 3</a> </li> </ul> </div> </div> </div>
เราเพิ่งห่อเนื้อหาทั้งหมดของการ์ดใน
และเพิ่ม COL-6 ให้ทั้งภาพและตัวการ์ดเพื่อให้การ์ด 50-50
ภาพการ์ดเป็นพื้นหลัง
นอกจากนี้เรายังสามารถขยายรูปภาพให้ทั่วทั้งการ์ดและวางข้อความ รายการ ลิงก์ ฯลฯ ไว้บนการ์ดได้ เราทำได้โดยให้ คลาสของ CARD-IMG แล้ววางทุกอย่างใน
<div class="card"> <img src="https://via.placeholder.com/100" alt="" class="card-img" /> <div class="card-img-overlay"> <h4 class="card-title">Overlay Title</h4> <p class="card-text"> Image text overlay </p> <p>second paragraph</p> <p>third paragraph</p> <p>fourth paragraph</p> <div class="btn-group w-100"> <button class="btn btn-primary">blue</button> <button class="btn btn-info">teal</button> <button class="btn btn-danger">red</button> <button class="btn btn-dark">black</button> <button class="btn btn-success">green</button> </div> </div> </div>
ที่นี่เราใช้ยูทิลิตี้ความกว้างเป็นครั้งแรก W-100 บน BTN-GROUP
ยูทิลิตี้ความกว้างและความสูงของสายรัดรองเท้า:
w/h-25/50/75/100 – กว้าง/สูง 25%/50%/75%/100%
ในกรณีของเรา 100% ลบช่องว่างภายในแบบเดียวกับที่ใช้กับ CARD-BODY ซึ่งใช้ที่นี่โดย CARD-IMG-OVERLAY
คอลัมน์การ์ด
นอกจากนี้ยังมีตัวเลือกนี้ในการจัดวางการ์ดในคอลัมน์เพื่อให้ไปบนลงล่างก่อน และเฉพาะเมื่อเต็มคอลัมน์แล้ว จะเริ่มในการ์ดใหม่
<div class="card-columns"> <div class="card"> <h3 class="card-title text-center p-2">Title of card 1</h3> <div class="card-body"> <p class="card-text"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam, rerum excepturi voluptate... </p> </div> </div> <div class="card"> <h3 class="card-title text-center p-2">Title of card 2</h3> <div class="card-body"> <p class="card-text"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam, rerum excepturi voluptate... </p> </div> </div> <div class="card"> <h3 class="card-title text-center p-2">Title of card 3</h3> <div class="card-body"> <p class="card-text"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam, rerum excepturi voluptate... </p> </div> </div> <div class="card"> <h3 class="card-title text-center p-2">Title of card 4</h3> <div class="card-body"> <p class="card-text"> Lorem ipsum dolor sit amet consectetur adipisicing elit. Aliquam, rerum excepturi voluptate... </p> </div> </div> </div>
เราเพียงแค่ห่อการ์ดทั้งหมดของเราใน
การจัดสไตล์การ์ด Bootstrap
เมื่อพูดถึงการใส่สไตล์การ์ดบูตสแตรป เราสามารถเปลี่ยนพื้นหลังและสีข้อความได้ เช่นเดียวกับสีและรูปลักษณ์ของเส้นขอบ
สามารถใช้สไตล์กับการ์ดทั้งใบ เป็นส่วนประกอบย่อยแยกกัน หรือทั้งสองอย่าง ต่อไปนี้คือการ์ดที่มีสไตล์บางส่วนให้เลือกดู:
<div class="card bg-primary"> <div class="card-header"><h3>Header 1</h3></div> <div class="card-body"> <p>Body 1</p> </div> <div class="card-footer"><p>Footer 1</p></div> </div> <div class="card bg-success text-white"> <div class="card-header"><h3>Header 2</h3></div> <div class="card-body"> <p>Body 2</p> </div> <div class="card-footer text-danger"><p>Footer 2</p></div> </div> <div class="card bg-info text-dark border-danger"> <div class="card-header"><h3>Header 3</h3></div> <div class="card-body"> <p>Body 3</p> </div> <div class="card-footer"><p>Footer 3</p></div> </div> <div class="card border-primary bg-dark text-white"> <div class="card-header border-success"><h3>Header 4</h3></div> <div class="card-body text-danger"> <p>Body 4</p> </div> <div class="card-footer bg-warning text-info"><p>Footer 4</p></div> </div>
ไพ่ใบแรกมีพื้นหลังสีน้ำเงิน (BG-PRIMARY) อยู่ที่ตัวการ์ด โดยกำหนดสไตล์ให้ทั้งการ์ด
การ์ดใบที่สองมีพื้นหลังสีเขียว (BG-SUCCESS) และข้อความสีขาว (TEXT-WHITE) บนการ์ดทั้งใบ แต่มีข้อความสีแดง (TEXT-DANGER) ในส่วนท้าย ซึ่งจะแทนที่ TEXT-WHITE ขององค์ประกอบหลัก
ไพ่ใบที่สามมีพื้นหลังสีน้ำเงินเข้ม (BG-INFO) ข้อความสีดำ (TEXT-DARK) และเส้นขอบสีแดง (BORDER-DANGER)
สุดท้าย ไพ่ใบที่สี่มีขอบสีน้ำเงิน (BORDER-PRIMARY) พื้นหลังสีดำ (BG-DARK) และข้อความสีขาว (TEXT-WHITE) บนการ์ดทั้งใบ
เส้นขอบสีเขียว (BORDER-SUCCESS) บนส่วนหัว ข้อความสีแดง (TEXT-DANGER) ในส่วนเนื้อหา และพื้นหลังสีเหลือง (BG-WARNING) และข้อความสีน้ำเงินเข้ม (TEXT-INFO) ในส่วนท้าย
นี่คือลักษณะของการ์ดสายรุ้งของเรา:
สรุป
การ์ด Bootstrap เป็นส่วนประกอบที่ค่อนข้างทรงพลังพร้อมตัวเลือกมากมาย พวกเขาสามารถจัดกลุ่มเป็นสำรับไพ่สำหรับส่วนที่แยกจากกัน เหนียวแน่น หรือเป็นกลุ่มไพ่เพื่อหลอมรวมเป็นเอนทิตีเดียว พวกเขาสามารถกระจายเป็นแถวหรือในคอลัมน์การ์ดเพื่อให้ดูแตกต่าง
พวกเขาสามารถโฮสต์รูปภาพ รายการ และลิงก์ ทั้งหมดในรูปแบบต่างๆ
พวกเขายังสามารถมีส่วนหัวและส่วนท้ายของตัวเอง ทั้งหมดนี้มีรูปแบบและการจัดรูปแบบที่กำหนดไว้ล่วงหน้า แต่เปิดให้เราปรับแต่งได้
พวกมันมีความยืดหยุ่นอย่างเหลือเชื่อ และอาจเป็นหนึ่งในตัวอย่างที่ดีที่สุดที่แสดงให้เห็นว่า Bootstrap ประสบความสำเร็จมากแค่ไหน ด้วยการตั้งค่าก่อนหน้าเพียงเล็กน้อยในเวลาอันสั้น