Dev to webs {Coding…}

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

บทที่ 10: การสร้าง Responsive Design ด้วย Tailwind CSS


Responsive Design คืออะไร?

Responsive Design คือการออกแบบหน้าเว็บให้ปรับตัวและแสดงผลได้อย่างเหมาะสมในทุกขนาดหน้าจอ ไม่ว่าจะเป็นบนคอมพิวเตอร์ แท็บเล็ต หรือโทรศัพท์มือถือ Tailwind CSS ช่วยให้การสร้าง Responsive Design เป็นเรื่องง่าย ด้วยระบบ Breakpoints และ Utility Classes ที่ใช้งานสะดวก


1. การทำความเข้าใจกับ Breakpoints ใน Tailwind CSS

Tailwind CSS มี Breakpoints ที่กำหนดไว้ล่วงหน้าเพื่อจัดการขนาดหน้าจอ:

  • sm: เล็ก (≥640px)
  • md: กลาง (≥768px)
  • lg: ใหญ่ (≥1024px)
  • xl: ใหญ่มาก (≥1280px)
  • 2xl: ใหญ่พิเศษ (≥1536px)

คุณสามารถใช้ Breakpoints เหล่านี้เพื่อกำหนด styles ที่แตกต่างกันในขนาดหน้าจอที่ต่างกันได้

โครงสร้างการใช้งาน:

<element class="base-class sm:class-for-sm md:class-for-md lg:class-for-lg xl:class-for-xl">


2. การกำหนด Layout ที่เปลี่ยนตามขนาดหน้าจอ

ตัวอย่าง: การเปลี่ยนรูปแบบคอลัมน์

<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
  <div class="bg-yellow-500 p-4">Box 4</div>
</div>

  • grid-cols-1: หน้าจอเล็กแสดง 1 คอลัมน์
  • sm:grid-cols-2: หน้าจอขนาดเล็กแสดง 2 คอลัมน์
  • lg:grid-cols-4: หน้าจอขนาดใหญ่แสดง 4 คอลัมน์

3. การปรับขนาดและระยะห่าง

Tailwind CSS ช่วยให้คุณปรับขนาดและระยะห่างได้ตาม Breakpoints

ตัวอย่าง: การปรับขนาดข้อความ

<h1 class="text-xl sm:text-2xl lg:text-4xl">
  ข้อความที่เปลี่ยนขนาดตามหน้าจอ
</h1>

  • text-xl: ใช้กับหน้าจอขนาดเล็ก
  • sm:text-2xl: ขนาดใหญ่ขึ้นเมื่อหน้าจอ ≥640px
  • lg:text-4xl: ขนาดใหญ่สุดเมื่อหน้าจอ ≥1024px

ตัวอย่าง: การปรับระยะ Padding

<div class="p-2 sm:p-4 lg:p-8 bg-gray-200">
  กล่องที่ปรับระยะ Padding
</div>

  • p-2: Padding ขนาดเล็ก
  • sm:p-4: Padding ขนาดกลาง
  • lg:p-8: Padding ขนาดใหญ่

4. การจัดตำแหน่งใน Responsive Design

Tailwind CSS ช่วยให้การจัดตำแหน่งง่ายขึ้นโดยใช้ Breakpoints

ตัวอย่าง: การจัดข้อความ

<p class="text-left sm:text-center lg:text-right">
  ข้อความที่เปลี่ยนตำแหน่งตามหน้าจอ
</p>

  • text-left: ข้อความชิดซ้ายในหน้าจอเล็ก
  • sm:text-center: ข้อความอยู่ตรงกลางเมื่อหน้าจอ ≥640px
  • lg:text-right: ข้อความชิดขวาเมื่อหน้าจอ ≥1024px

5. การซ่อนและแสดงองค์ประกอบ

คุณสามารถซ่อนหรือแสดงองค์ประกอบตามขนาดหน้าจอด้วยคลาส hidden และ block:

ตัวอย่าง:

<div class="hidden sm:block lg:hidden">
  กล่องนี้จะแสดงเมื่อหน้าจอ ≥640px และจะซ่อนเมื่อหน้าจอ ≥1024px
</div>

  • hidden: ซ่อนองค์ประกอบ
  • block: แสดงองค์ประกอบเป็น Block

6. การทำงานร่วมกับ Flexbox และ Grid

Tailwind CSS ช่วยจัดการ Layout แบบ Responsive ด้วย Flexbox และ Grid

ตัวอย่าง: การจัดตำแหน่ง Flexbox

<div class="flex flex-col sm:flex-row gap-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

  • flex-col: องค์ประกอบเรียงในแนวตั้ง
  • sm:flex-row: เมื่อหน้าจอ ≥640px องค์ประกอบเรียงในแนวนอน

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

<div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

  • grid-cols-1: 1 คอลัมน์ในหน้าจอเล็ก
  • sm:grid-cols-3: 3 คอลัมน์เมื่อหน้าจอ ≥640px

7. ตัวอย่างการออกแบบ Responsive Design

ตัวอย่าง: Navbar

<nav class="bg-gray-800 text-white p-4">
  <div class="flex justify-between items-center">
    <h1 class="text-lg font-bold">MyWebsite</h1>
    <ul class="hidden sm:flex space-x-4">
      <li><a href="#" class="hover:text-blue-400">Home</a></li>
      <li><a href="#" class="hover:text-blue-400">About</a></li>
      <li><a href="#" class="hover:text-blue-400">Contact</a></li>
    </ul>
    <button class="sm:hidden bg-blue-500 px-4 py-2 rounded">Menu</button>
  </div>
</nav>

  • เมนูจะเปลี่ยนจากการแสดงรายการ (ul) เป็นปุ่ม (Menu) เมื่อหน้าจอเล็กกว่า sm

8. การปรับแต่ง Breakpoints

หาก Breakpoints เริ่มต้นไม่เพียงพอ คุณสามารถปรับแต่งได้ในไฟล์ tailwind.config.js:

ตัวอย่าง:

module.exports = {
  theme: {
    screens: {
      'xs': '480px',
      'sm': '640px',
      'md': '768px',
      'lg': '1024px',
      'xl': '1280px',
      '2xl': '1536px',
    },
  },
};

ในตัวอย่างนี้มีการเพิ่ม xs สำหรับหน้าจอขนาดเล็กมาก (480px)


สรุป

Responsive Design ใน Tailwind CSS ทำให้การออกแบบหน้าเว็บที่สามารถปรับตัวกับขนาดหน้าจอต่าง ๆ เป็นเรื่องง่าย ด้วยการใช้ Breakpoints และ Utility Classes ที่มีประสิทธิภาพ คุณสามารถสร้าง Layout ที่ยืดหยุ่นและใช้งานได้กับทุกอุปกรณ์ ในบทถัดไป เราจะเรียนรู้เกี่ยวกับการใช้ Pseudo-Classes เช่น hover, focus เพื่อเพิ่มเอฟเฟกต์แบบโต้ตอบ!