Dev to webs {Coding…}

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

บทที่ 16: การจัดการฟอร์ม (Forms) ด้วย Tailwind CSS


ฟอร์มคืออะไรและทำไมต้องออกแบบให้ดี?

ฟอร์ม (Form) เป็นส่วนสำคัญของเว็บไซต์ที่ใช้ในการเก็บข้อมูลจากผู้ใช้ เช่น การสมัครสมาชิก, การเข้าสู่ระบบ, หรือการกรอกข้อมูลติดต่อ การออกแบบฟอร์มให้ใช้งานง่ายและดูสวยงามจึงมีความสำคัญต่อประสบการณ์ของผู้ใช้ (UX) ใน Tailwind CSS คุณสามารถสร้างฟอร์มที่ดูทันสมัยและใช้งานง่ายด้วย Utility Classes โดยไม่ต้องเขียน CSS เพิ่มเติม


1. โครงสร้างพื้นฐานของฟอร์มใน Tailwind CSS

Tailwind CSS มี Utility Classes สำหรับจัดการฟอร์มเบื้องต้น เช่น:

  • form-input: สำหรับช่องกรอกข้อมูล (Input)
  • form-select: สำหรับ Dropdown
  • form-checkbox: สำหรับ Checkbox
  • form-radio: สำหรับ Radio Button

ตัวอย่างโครงสร้างพื้นฐาน:

<form class="space-y-4">
  <div>
    <label for="email" class="block text-sm font-medium text-gray-700">อีเมล</label>
    <input type="email" id="email" class="form-input mt-1 block w-full rounded-md border-gray-300 shadow-sm">
  </div>
  <div>
    <label for="password" class="block text-sm font-medium text-gray-700">รหัสผ่าน</label>
    <input type="password" id="password" class="form-input mt-1 block w-full rounded-md border-gray-300 shadow-sm">
  </div>
  <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-700">
    ส่งข้อมูล
  </button>
</form>


2. การจัดการ Input Field

Tailwind CSS ช่วยปรับแต่ง Input Field ได้ง่าย ๆ เช่น การเพิ่มขอบโค้ง (rounded), เงา (shadow), หรือเอฟเฟกต์เมื่อโฟกัส (focus:)

ตัวอย่าง:

<input type="text" placeholder="ชื่อของคุณ" class="form-input w-full rounded-lg border-gray-300 shadow focus:ring-2 focus:ring-blue-500">

ในตัวอย่าง:

  • rounded-lg: เพิ่มขอบโค้ง
  • shadow: เพิ่มเงา
  • focus:ring-2 focus:ring-blue-500: เพิ่มวงแหวนสีฟ้าเมื่อโฟกัส

3. การจัดการ Select Dropdown

สำหรับ Select Dropdown คุณสามารถใช้คลาส form-select เพื่อปรับแต่งได้ง่าย:

ตัวอย่าง:

<select class="form-select mt-1 block w-full rounded-md border-gray-300 shadow">
  <option>ตัวเลือกที่ 1</option>
  <option>ตัวเลือกที่ 2</option>
  <option>ตัวเลือกที่ 3</option>
</select>


4. การจัดการ Checkbox และ Radio Button

Tailwind CSS มีคลาสสำหรับ Checkbox และ Radio Button เพื่อให้ดูสะอาดตาและใช้งานง่าย:

ตัวอย่าง Checkbox:

<label class="inline-flex items-center">
  <input type="checkbox" class="form-checkbox text-blue-500">
  <span class="ml-2">ยอมรับข้อกำหนด</span>
</label>

ตัวอย่าง Radio Button:

<label class="inline-flex items-center">
  <input type="radio" name="gender" class="form-radio text-green-500">
  <span class="ml-2">ชาย</span>
</label>
<label class="inline-flex items-center">
  <input type="radio" name="gender" class="form-radio text-green-500">
  <span class="ml-2">หญิง</span>
</label>


5. การปรับแต่งฟอร์มด้วย Plugins

Tailwind CSS มี Plugin อย่าง @tailwindcss/forms ซึ่งช่วยปรับแต่งฟอร์มให้ดูทันสมัยโดยอัตโนมัติ

ติดตั้ง Plugin:

npm install @tailwindcss/forms

เพิ่มใน tailwind.config.js:

module.exports = {
  theme: {
    extend: {},
  },
  plugins: [
    require('@tailwindcss/forms'),
  ],
};

ตัวอย่างการใช้งาน:

<form class="space-y-4">
  <input type="text" placeholder="ชื่อ" class="form-input w-full">
  <input type="email" placeholder="อีเมล" class="form-input w-full">
  <button class="bg-green-500 text-white px-4 py-2 rounded hover:bg-green-700">
    ส่งข้อมูล
  </button>
</form>


6. การจัดการปุ่ม (Buttons)

Tailwind CSS ช่วยให้คุณออกแบบปุ่มได้หลากหลาย:

ตัวอย่างปุ่มพื้นฐาน:

<button class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-700">
  ปุ่มส่งข้อมูล
</button>

ตัวอย่างปุ่มแบบ Ghost:

<button class="border border-blue-500 text-blue-500 px-4 py-2 rounded hover:bg-blue-500 hover:text-white">
  ปุ่มแบบโปร่ง
</button>


7. การจัด Layout ของฟอร์ม

Tailwind CSS ช่วยจัด Layout ของฟอร์มให้สวยงามและใช้งานง่ายด้วย Flexbox และ Grid

ตัวอย่าง: ฟอร์มแบบ 2 คอลัมน์

<form class="grid grid-cols-2 gap-4">
  <div>
    <label for="first_name" class="block text-sm font-medium text-gray-700">ชื่อ</label>
    <input type="text" id="first_name" class="form-input mt-1 block w-full rounded-md border-gray-300 shadow-sm">
  </div>
  <div>
    <label for="last_name" class="block text-sm font-medium text-gray-700">นามสกุล</label>
    <input type="text" id="last_name" class="form-input mt-1 block w-full rounded-md border-gray-300 shadow-sm">
  </div>
  <div class="col-span-2">
    <label for="email" class="block text-sm font-medium text-gray-700">อีเมล</label>
    <input type="email" id="email" class="form-input mt-1 block w-full rounded-md border-gray-300 shadow-sm">
  </div>
  <div class="col-span-2 text-right">
    <button type="submit" class="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-700">
      ส่งข้อมูล
    </button>
  </div>
</form>


8. การทำฟอร์มแบบ Responsive

คุณสามารถปรับแต่งฟอร์มให้รองรับหน้าจอทุกขนาดด้วย Breakpoints:

ตัวอย่าง:

<form class="grid grid-cols-1 sm:grid-cols-2 gap-4">
  <input type="text" placeholder="ชื่อ" class="form-input">
  <input type="text" placeholder="นามสกุล" class="form-input">
  <input type="email" placeholder="อีเมล" class="form-input col-span-1 sm:col-span-2">
  <button class="bg-blue-500 text-white px-4 py-2 rounded col-span-1 sm:col-span-2">
    ส่งข้อมูล
  </button>
</form>


สรุป

การจัดการฟอร์มใน Tailwind CSS เป็นเรื่องง่ายและสะดวก คุณสามารถสร้างฟอร์มที่ดูทันสมัยและใช้งานง่ายด้วย Utility Classes และ Plugins ที่รองรับฟอร์มโดยเฉพาะ Tailwind CSS ยังช่วยให้คุณสามารถปรับแต่งฟอร์มให้เหมาะสมกับดีไซน์ของคุณและรองรับทุกขนาดหน้าจอได้อย่างง่ายดาย บทถัดไป เราจะมาพูดถึง การเพิ่มประสิทธิภาพและลดขนาดไฟล์ Tailwind CSS เพื่อปรับปรุงประสิทธิภาพเว็บไซต์ของคุณ!