Pseudo-Classes คืออะไร?
Pseudo-Classes เป็นส่วนหนึ่งของ CSS ที่ช่วยให้เราสามารถกำหนดรูปแบบ (styles) ให้กับองค์ประกอบในสถานะพิเศษ เช่น เมื่อมีการโต้ตอบกับผู้ใช้ (Hover, Focus) หรือในสถานะเฉพาะ (Active, Disabled) ใน Tailwind CSS การใช้งาน Pseudo-Classes นั้นง่ายและสะดวกผ่าน Utility Classes ที่มีอยู่ในตัว
1. การใช้งาน Hover
Tailwind CSS รองรับการปรับแต่งสไตล์เมื่อผู้ใช้วางเมาส์เหนือองค์ประกอบด้วยคลาส hover:
ตัวอย่าง:
<button class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-700">
ปุ่มเปลี่ยนสีเมื่อ Hover
</button>
ในตัวอย่างนี้:
bg-blue-500
: สีพื้นหลังปกติhover:bg-blue-700
: เปลี่ยนสีพื้นหลังเป็นน้ำเงินเข้มเมื่อวางเมาส์
2. การใช้งาน Focus
Focus ใช้เพื่อกำหนดสไตล์ให้กับองค์ประกอบที่อยู่ในสถานะโฟกัส (เช่น Input หรือ Button ที่ถูกเลือก) โดยใช้คลาส focus:
ตัวอย่าง:
<input class="border border-gray-300 rounded focus:border-blue-500 focus:ring-2 focus:ring-blue-300 px-4 py-2" type="text" placeholder="กรอกข้อมูล">
ในตัวอย่างนี้:
focus:border-blue-500
: เปลี่ยนสีขอบเมื่อ Input อยู่ในสถานะโฟกัสfocus:ring-2 focus:ring-blue-300
: เพิ่มวงแหวนรอบ Input เมื่อโฟกัส
3. การใช้งาน Active
Active ใช้สำหรับกำหนดสไตล์ให้กับองค์ประกอบที่ถูกคลิกหรืออยู่ในสถานะถูกกด โดยใช้คลาส active:
ตัวอย่าง:
<button class="bg-green-500 text-white px-4 py-2 rounded active:bg-green-700">
ปุ่มเปลี่ยนสีเมื่อ Active
</button>
ในตัวอย่างนี้:
active:bg-green-700
: เปลี่ยนสีพื้นหลังเมื่อปุ่มถูกกด
4. การใช้งาน Disabled
Disabled ใช้สำหรับกำหนดสไตล์ให้กับองค์ประกอบที่อยู่ในสถานะไม่พร้อมใช้งาน โดยใช้คลาส disabled:
ตัวอย่าง:
<button class="bg-gray-500 text-white px-4 py-2 rounded disabled:bg-gray-300 disabled:cursor-not-allowed" disabled>
ปุ่ม Disabled
</button>
ในตัวอย่างนี้:
disabled:bg-gray-300
: เปลี่ยนสีพื้นหลังเมื่อปุ่มถูกปิดการใช้งานdisabled:cursor-not-allowed
: เปลี่ยนเคอร์เซอร์เป็นเครื่องหมายห้าม
5. การใช้งาน Group และ State ภายในกลุ่ม
Tailwind CSS มีคลาส group
เพื่อจัดการสถานะขององค์ประกอบหลายตัวที่อยู่ในกลุ่มเดียวกัน
ตัวอย่าง:
<div class="group">
<button class="bg-gray-500 text-white px-4 py-2 rounded group-hover:bg-gray-700">
ปุ่มในกลุ่ม
</button>
</div>
ในตัวอย่างนี้:
group-hover:bg-gray-700
: เปลี่ยนสีพื้นหลังของปุ่มเมื่อผู้ใช้วางเมาส์เหนือกลุ่ม (group
)
6. การใช้งาน Even และ Odd
Tailwind CSS ช่วยให้คุณกำหนดสไตล์สำหรับแถวที่มีเลขคู่ (even:
) และเลขคี่ (odd:
) ในตารางหรือรายการได้
ตัวอย่าง:
<table class="w-full border-collapse">
<tr class="odd:bg-gray-100 even:bg-gray-200">
<td class="p-4">แถวที่ 1</td>
</tr>
<tr class="odd:bg-gray-100 even:bg-gray-200">
<td class="p-4">แถวที่ 2</td>
</tr>
</table>
7. การใช้งาน First และ Last
คุณสามารถกำหนดสไตล์เฉพาะสำหรับองค์ประกอบแรก (first:
) และองค์ประกอบสุดท้าย (last:
) ได้
ตัวอย่าง:
<ul class="list-none">
<li class="first:font-bold last:text-red-500">รายการที่ 1</li>
<li>รายการที่ 2</li>
<li class="first:font-bold last:text-red-500">รายการที่ 3</li>
</ul>
8. การใช้งาน Checked
Checked ใช้สำหรับกำหนดสไตล์ให้กับ Checkbox หรือ Radio Button ที่ถูกเลือก โดยใช้คลาส checked:
ตัวอย่าง:
<label class="inline-flex items-center">
<input type="checkbox" class="checked:bg-blue-500">
<span class="ml-2">ตัวเลือก</span>
</label>
9. การใช้งาน Not-First และ Not-Last
สำหรับการกำหนดสไตล์ให้กับองค์ประกอบที่ไม่ใช่อันแรกหรืออันสุดท้ายในกลุ่ม คุณสามารถใช้ not-first:
และ not-last:
ตัวอย่าง:
<div class="flex space-x-4">
<div class="not-first:bg-gray-300 p-4">1</div>
<div class="not-first:bg-gray-300 p-4">2</div>
<div class="not-first:bg-gray-300 p-4">3</div>
</div>
10. การจัดการโครงสร้างซับซ้อนด้วย Pseudo-Classes
Pseudo-Classes ใน Tailwind CSS ยังรองรับการจัดการโครงสร้างที่ซับซ้อน เช่น peer
และ peer-*
สำหรับควบคุมองค์ประกอบอื่นที่อยู่ในกลุ่มเดียวกัน
ตัวอย่าง:
<div>
<input type="checkbox" id="toggle" class="peer hidden">
<label for="toggle" class="bg-gray-500 text-white px-4 py-2 rounded cursor-pointer peer-checked:bg-blue-500">
เปิด/ปิด
</label>
</div>
ในตัวอย่างนี้:
- เมื่อ Checkbox ถูกเลือก (
peer-checked
), สีพื้นหลังของlabel
จะเปลี่ยนเป็นสีน้ำเงิน
ตัวอย่างการใช้งานจริง
เมนูแบบ Interactive:
<nav class="flex gap-4">
<a href="#" class="text-gray-500 hover:text-blue-500">หน้าแรก</a>
<a href="#" class="text-gray-500 hover:text-blue-500">เกี่ยวกับ</a>
<a href="#" class="text-gray-500 hover:text-blue-500">ติดต่อเรา</a>
</nav>
ฟอร์มแบบโต้ตอบ:
<form class="space-y-4">
<input type="text" class="border border-gray-300 focus:border-blue-500 focus:ring-2 focus:ring-blue-300 px-4 py-2 rounded w-full" placeholder="ชื่อของคุณ">
<button class="bg-green-500 text-white px-4 py-2 rounded hover:bg-green-700 focus:ring-2 focus:ring-green-300">
ส่งข้อมูล
</button>
</form>
สรุป
Pseudo-Classes ใน Tailwind CSS ช่วยเพิ่มความโต้ตอบให้กับหน้าเว็บของคุณได้ง่ายและรวดเร็ว ไม่ว่าจะเป็นการสร้างเอฟเฟกต์แบบ Hover, Focus, หรือ Active คุณสามารถปรับแต่งการแสดงผลให้เหมาะสมกับสถานะต่าง ๆ ได้อย่างเต็มที่ ในบทต่อไป เราจะพูดถึง การใช้งาน Plugins ใน Tailwind CSS เพื่อเพิ่มความสามารถเพิ่มเติมให้กับโปรเจกต์ของคุณ!