Dev to webs {Coding…}

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

บทที่ 13: การสร้าง Animation และ Transition ใน Tailwind CSS


Animation และ Transition คืออะไร?

  • Animation: ใช้สร้างความเคลื่อนไหวที่ต่อเนื่องสำหรับองค์ประกอบ เช่น การหมุน การเลื่อน หรือการเปลี่ยนขนาด
  • Transition: ใช้สร้างเอฟเฟกต์การเปลี่ยนแปลงระหว่างสถานะ เช่น การเปลี่ยนสี หรือการย่อ-ขยาย

ใน Tailwind CSS คุณสามารถใช้งาน Animation และ Transition ได้ง่าย ๆ ผ่าน Utility Classes โดยไม่ต้องเขียนโค้ด CSS เพิ่มเติม


1. การใช้งาน Transition

Transition ใน Tailwind CSS ช่วยให้การเปลี่ยนแปลงระหว่างสถานะราบรื่นและดูเป็นธรรมชาติ

คลาสพื้นฐานสำหรับ Transition:

  • transition: เปิดใช้งาน Transition
  • duration-{time}: กำหนดระยะเวลา (มิลลิวินาที)
  • ease-{type}: กำหนดความเร็วของ Transition
  • delay-{time}: กำหนดระยะเวลาหน่วงก่อน Transition เริ่มทำงาน

ตัวอย่าง: การเปลี่ยนสีเมื่อ Hover

<button class="bg-blue-500 text-white px-4 py-2 rounded transition duration-300 ease-in-out hover:bg-blue-700">
  ปุ่มเปลี่ยนสี
</button>

  • duration-300: ใช้เวลา 300ms ในการเปลี่ยนสถานะ
  • ease-in-out: การเปลี่ยนแปลงเริ่มและสิ้นสุดอย่างนุ่มนวล
  • hover:bg-blue-700: เปลี่ยนพื้นหลังเมื่อ Hover

2. การกำหนด Transition เฉพาะ Properties

Tailwind CSS อนุญาตให้คุณกำหนด Transition สำหรับ Properties เฉพาะ เช่น สี (colors), การแปลงรูป (transform), หรือทั้งหมด (all)

ตัวอย่าง:

<div class="transition-colors duration-500 hover:bg-green-500 bg-gray-200 p-4">
  เปลี่ยนสีพื้นหลังเมื่อ Hover
</div>

ในตัวอย่างนี้:

  • transition-colors: ทำให้เฉพาะการเปลี่ยนแปลงของสีมีเอฟเฟกต์ Transition

3. การใช้งาน Transform

Transform ใช้สำหรับการปรับเปลี่ยนลักษณะขององค์ประกอบ เช่น การหมุน การเลื่อน หรือการปรับขนาด

คลาสพื้นฐานสำหรับ Transform:

  • transform: เปิดใช้งาน Transform
  • scale-{value}: ปรับขนาด (1 = ขนาดปกติ, 2 = 200%)
  • rotate-{angle}: หมุน (องศา)
  • translate-x-{value} / translate-y-{value}: เลื่อนในแกน X/Y
  • skew-x-{value} / skew-y-{value}: บิดในแกน X/Y

ตัวอย่าง: การย่อ-ขยายเมื่อ Hover

<div class="transform hover:scale-125 transition duration-300 bg-blue-500 text-white p-4">
  ย่อ-ขยายเมื่อ Hover
</div>


4. การใช้งาน Animation

Tailwind CSS รองรับ Animation แบบกำหนดเองและมี Animation พื้นฐานที่ใช้งานได้ทันที เช่น spin, ping, pulse, และ bounce

คลาสพื้นฐานสำหรับ Animation:

  • animate-spin: หมุนรอบ
  • animate-ping: การกระจายแสงแบบ Ping
  • animate-pulse: การกระพริบเบา ๆ
  • animate-bounce: การเด้ง

ตัวอย่าง: ไอคอนหมุน

<div class="w-16 h-16 bg-blue-500 rounded-full animate-spin"></div>

ตัวอย่าง: การเด้ง

<div class="w-16 h-16 bg-green-500 rounded-full animate-bounce"></div>


5. การสร้าง Animation แบบกำหนดเอง

คุณสามารถเพิ่ม Animation แบบกำหนดเองในไฟล์ tailwind.config.js:

ตัวอย่าง:

module.exports = {
  theme: {
    extend: {
      animation: {
        'wiggle': 'wiggle 1s ease-in-out infinite',
      },
      keyframes: {
        wiggle: {
          '0%, 100%': { transform: 'rotate(-3deg)' },
          '50%': { transform: 'rotate(3deg)' },
        },
      },
    },
  },
};

การใช้งานใน HTML:

<div class="w-16 h-16 bg-red-500 animate-wiggle"></div>

ในตัวอย่างนี้:

  • wiggle: เป็น Animation ที่กำหนดให้หมุนไปมาแบบนุ่มนวล

6. การควบคุมระยะเวลาและทิศทางของ Animation

คุณสามารถกำหนดระยะเวลาและการทำซ้ำของ Animation ได้:

  • duration-{time}: ระยะเวลา
  • delay-{time}: หน่วงเวลา
  • infinite: ทำซ้ำไม่มีสิ้นสุด

ตัวอย่าง: การหมุนพร้อมหน่วงเวลา

<div class="w-16 h-16 bg-purple-500 animate-spin duration-1000 delay-200"></div>


7. ตัวอย่างการใช้งาน Animation และ Transition ในโปรเจกต์จริง

การสร้างปุ่มแบบโต้ตอบ:

<button class="bg-blue-500 text-white px-6 py-3 rounded-lg transition transform hover:scale-110 hover:bg-blue-700">
  คลิกที่นี่
</button>

การแสดง Loading Icon:

<div class="flex items-center space-x-4">
  <div class="w-8 h-8 border-4 border-blue-500 border-t-transparent rounded-full animate-spin"></div>
  <span>กำลังโหลด...</span>
</div>

การใช้ Animation ในหน้า Landing Page:

<div class="text-center space-y-4">
  <h1 class="text-4xl font-bold animate-pulse">ยินดีต้อนรับ</h1>
  <p class="text-gray-700">Tailwind CSS ช่วยเพิ่มความสวยงามและความโต้ตอบ</p>
</div>


8. เคล็ดลับการใช้งาน Animation และ Transition อย่างมืออาชีพ

  • อย่าทำ Animation ซับซ้อนเกินไป: เน้นเรียบง่ายและสื่อสารได้ดี
  • ระวังการใช้ Animation ซ้ำมากเกินไป: ใช้เฉพาะจุดที่จำเป็น
  • ตรวจสอบประสิทธิภาพ: Animation ที่หนักอาจทำให้หน้าเว็บช้าลง โดยเฉพาะบนอุปกรณ์มือถือ

สรุป

การใช้งาน Animation และ Transition ใน Tailwind CSS ทำให้การสร้างหน้าเว็บที่สวยงามและมีชีวิตชีวาเป็นเรื่องง่าย คุณสามารถปรับแต่งการเคลื่อนไหวได้หลากหลาย ไม่ว่าจะเป็นการเปลี่ยนสถานะ การเพิ่มเอฟเฟกต์ หรือการสร้าง Animation แบบกำหนดเอง บทถัดไป เราจะมาพูดถึง การจัดการ Z-Index และการควบคุมลำดับขององค์ประกอบ ใน Tailwind CSS!