Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 11: การใช้งาน Pseudo-Classes ใน Tailwind CSS


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 เพื่อเพิ่มความสามารถเพิ่มเติมให้กับโปรเจกต์ของคุณ!