08: Bootstrap Components
Components ต่าง ๆ ที่น่าสนใจของ Bootstrap
1. Contextual Colors - ชุดสีสื่อความหมาย
Bootstrap ไม่ได้เรียกสีว่า Red, Green, Blue แต่ใช้ชื่อตาม "บริบท" การใช้งาน
text-primary (สีตัวอักษร), bg-danger (สีพื้นหลัง),
btn-success (สีปุ่ม), border-warning (สีขอบ)
2. Navbar
เมนูสุดเทพที่ย่อเป็น Hamburger Menu ให้อัตโนมัติบนมือถือ (Navbar)
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="#">MyBrand</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link active" href="#">หน้าแรก</a></li>
<li class="nav-item"><a class="nav-link" href="#">สินค้า</a></li>
<li class="nav-item"><a class="nav-link" href="#">ติดต่อเรา</a></li>
</ul>
</div>
</div>
</nav>
3. Content Components
กล่องอเนกประสงค์ ใส่รูป เนื้อหา ปุ่ม ได้ครบ
<div class="card">
<img src="..." class="card-img-top">
<div class="card-body">
<h5 class="card-title">Title</h5>
<p class="card-text">Text...</p>
<a href="#" class="btn btn-primary">Go</a>
</div>
</div>
ภาพเลื่อนอัตโนมัติ
4. Forms & Buttons
Buttons (ปุ่ม)
ใช้ class btn คู่กับสี เช่น
btn-primary
Form Controls
ใส่ class form-control ให้ input เสมอ
Preview:
HTML Code:
<form>
<div class="mb-3">
<label class="form-label">ชื่อ-นามสกุล</label>
<input type="text" class="form-control">
</div>
<div class="mb-3">
<label class="form-label">แผนก</label>
<select class="form-select">
<option selected>-- เลือก --</option>
<option value="1">IT</option>
<option value="2">HR</option>
</select>
</div>
<div class="mb-3">
<label class="d-block">เพศ</label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="gender" id="m">
<label class="form-check-label" for="m">ชาย</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="gender" id="f">
<label class="form-check-label" for="f">หญิง</label>
</div>
</div>
<div class="mb-3">
<label class="form-label">ที่อยู่</label>
<textarea class="form-control" rows="3"></textarea>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="ok">
<label class="form-check-label" for="ok">ยอมรับเงื่อนไข</label>
</div>
<button type="submit" class="btn btn-primary">ส่งข้อมูล</button>
<button type="reset" class="btn btn-outline-secondary">ยกเลิก</button>
</form>
5. Tables
Bootstrap ช่วยให้ตารางสวยงามทันทีแค่ใส่ class .table และยังมีลูกเล่นอื่น ๆ อีก
ตัวอย่างตารางแบบผสม (Mixed Styles)
ใช้ class ผสมกันได้เลย เช่น .table-striped (สลับสี)
+ .table-hover (เมาส์ชี้เปลี่ยนสี) + .table-bordered
(มีเส้นขอบ)
| # | ชื่อสินค้า | สถานะ | ราคา |
|---|---|---|---|
| 1 | MacBook Pro M3 | In Stock | ฿59,900 |
| 2 | iPhone 15 Pro | Low Stock | ฿41,900 |
| 3 | iPad Air 5 | Out of Stock | ฿23,900 |
<table class="table table-striped table-hover table-bordered">
<thead class="table-dark">
<tr>...</tr>
</thead>
<tbody>
...
</tbody>
</table>
รูปแบบอื่น ๆ
.table-borderless: ตารางไร้เส้นขอบ (ดูสะอาดตา).table-sm: ลดระยะห่าง (Padding) ให้ตารางแน่นขึ้น.table-dark: เปลี่ยนเป็นธีมสีมืดทั้งตาราง.align-middle: จัดเนื้อหาให้อยู่กึ่งกลางบรรทัดแนวตั้ง
Pro Tip: Table Responsive
ตารางมักจะมีปัญหา "ล้นจอ" เมื่อเปิดในมือถือ
แก้ได้ง่ายๆ ด้วยการเอา div ครอบตารางไว้
<div class="table-responsive">
<table class="table ...">...</table>
</div>
6. Images
Bootstrap มี Class ช่วยจัดการรูปภาพให้แสดงผลได้หลากหลายรูปแบบ
.img-fluid
ยืดหดตามขนาดจอ (Max-width: 100%) ควรใส่ทุกรูปในเว็บ
<img src="..." class="img-fluid">
.img-thumbnail
ใส่กรอบขาวและขอบมนเล็กน้อย (เหมือนรูปสินค้า)
<img src="..." class="img-thumbnail">
.rounded
ลบเหลี่ยมมุมภาพให้ดูนุ่มนวล (Border Radius)
<img src="..." class="rounded">
.rounded-circle
ตัดภาพเป็นวงกลม (รูปต้นฉบับควรเป็นสี่เหลี่ยมจัตุรัส)
<img src="..." class="rounded-circle">
7. ไอคอนสวย ๆ ด้วย FontAwesome
Bootstrap ทำงานร่วมกับ FontAwesome ได้ดีเยี่ยม โดยสามารถใช้ไอคอนแทนรูปภาพเพื่อลดขนาดไฟล์และโหลดไวขึ้น
วิธีการใช้งานพื้นฐาน
ใช้ tag <i> ตามด้วย class
ของไอคอนที่ต้องการ
<i class="fa-solid fa-house"></i>
<i class="fa-brands fa-facebook"></i>
<i class="fa-solid fa-heart text-danger"></i>
การปรับขนาด & แหล่งค้นหา
ใช้ Class ของ FontAwesome เพื่อปรับขนาดได้เลย
-
fa-xs,fa-sm -
fa-lg(ใหญ่ขึ้น 33%) -
fa-2xถึงfa-10x
เข้าเว็บ fontawesome.com แล้วพิมพ์ค้นหา (เลือก Filter เป็น Free)
Workshop: สร้างหน้า Landing Page
สร้างไฟล์ landing.html แล้วประกอบร่าง Components
ให้เป็นเว็บขายสินค้า:
โครงสร้างที่ต้องทำ:
- Navbar: มีโลโก้ และเมนู (Home, Products, Contact)
- Hero Section: ใช้
Carouselรูปสินค้าเด่น ๆ เต็มจอ - Features: ใช้
Gridวาง 3 จุดเด่น (ส่งฟรี, มีประกัน, ของแท้) โดยใช้Icon FontAwesome - Products: ใช้
Cardแสดงสินค้า 4 ชิ้น - Footer: ส่วนล่างสุด ใส่ Copyright
Practice Mission: งานสัมมนา "Future Tech 2026"
บรีฟจากผู้จัดงาน:
"บริษัทกำลังจะจัดงานสัมมนาไอทีแห่งปี อยากได้หน้าเว็บที่ดู Modern โดยสิ่งที่ต้องมีคือ สไลด์โชว์บรรยากาศงานปีก่อน, ตารางกำหนดการ, FAQ ถาม-ตอบ และสุดท้ายคือ ฟอร์มลงทะเบียน ครับ"
1. ส่วนแรก
- Navbar: ใช้
navbar-dark bg-darkมีโลโก้ "FutureTech" และเมนู (Home, Schedule, Register) - Hero Slide: ใช้
Carouselแสดงรูปภาพบรรยากาศงาน 3 รูป พร้อมคำบรรยายเท่ ๆ
2. ตารางงาน
สร้างตารางกำหนดการ:
- หัวตาราง: เวลา, หัวข้อ, วิทยากร
- ข้อมูล: ใส่ข้อมูลสมมติอย่างน้อย 3 แถว (เช่น 09:00 - AI Revolution)
3. คำถามพบบ่อย
ใช้ Accordion สร้างส่วน FAQ อย่างน้อย 2 ข้อ:
- Q: งานจัดที่ไหน? / A: ไบเทค บางนา
- Q: มีค่าใช้จ่ายไหม? / A: ฟรีตลอดงาน
4. ลงทะเบียน
สร้างฟอร์มใน Card:
- Inputs: ชื่อ-สกุล (Text), อีเมล (Email), ประเภทบัตร (Dropdown List: Student/General)
- Button: ปุ่ม Submit สีเขียว และปุ่ม Reset สีเทา