メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

การสร้าง Responsive Design พื้นฐานด้วย Tailwind CSS

บทความนี้อธิบายวิธีการสร้าง Responsive Design พื้นฐานด้วย Tailwind CSS โดยใช้ Breakpoints เพื่อปรับ Layout, ซ่อน/แสดงองค์ประกอบ และปรับ Typography ให้เหมาะสมกับ...

การสร้าง Responsive Design พื้นฐานด้วย Tailwind CSS

ในบทความก่อนหน้า เราได้เรียนรู้การสร้าง Components อย่างง่ายด้วย Tailwind CSS ซึ่งช่วยให้เราสร้าง UI ที่เป็นระเบียบและนำกลับมาใช้ใหม่ได้ง่ายขึ้น แต่สิ่งที่สำคัญไม่แพ้กันในการพัฒนาเว็บไซต์สมัยใหม่คือการสร้าง Responsive Design หรือการออกแบบที่ปรับเปลี่ยนตามขนาดหน้าจอต่างๆ ไม่ว่าจะเป็น Desktop, Tablet หรือ Mobile เพื่อให้ผู้ใช้งานได้รับประสบการณ์ที่ดีที่สุดไม่ว่าจะเข้าชมเว็บไซต์จากอุปกรณ์ใดก็ตาม

บทความนี้จะพาคุณไปเรียนรู้วิธีการสร้าง Responsive Design พื้นฐานด้วย Tailwind CSS โดยเน้นที่การใช้ Media Queries เพื่อปรับ Layout, การซ่อน/แสดงองค์ประกอบ และการปรับ Typography ให้เหมาะสมกับขนาดหน้าจอต่างๆ

การใช้ Breakpoints ใน Tailwind CSS

Tailwind CSS มาพร้อมกับ Breakpoints ที่กำหนดไว้ล่วงหน้า ทำให้การสร้าง Responsive Design เป็นเรื่องง่ายมากๆ Breakpoints เหล่านี้คือค่าความกว้างของหน้าจอ (screen width) ที่ Tailwind จะใช้เป็นตัวกำหนดว่า Utility Classes ใดจะถูกนำมาใช้ ยกตัวอย่างเช่น คลาส md:text-lg จะถูกนำมาใช้เมื่อหน้าจอมีความกว้างตั้งแต่ md breakpoint ขึ้นไป

Breakpoints ที่ Tailwind CSS กำหนดไว้โดย Default มีดังนี้:

  • sm: 640px
  • md: 768px
  • lg: 1024px
  • xl: 1280px
  • 2xl: 1536px

คุณสามารถปรับแต่ง Breakpoints เหล่านี้ได้ในไฟล์ tailwind.config.js หากต้องการค่าที่แตกต่างออกไป (แต่โดยทั่วไปค่า Default ก็ครอบคลุมการใช้งานส่วนใหญ่แล้ว)

Trade-off: การปรับแต่ง Breakpoints เองอาจทำให้เกิดความไม่สอดคล้องกันในการออกแบบ หากไม่มีเหตุผลที่ชัดเจน การใช้ค่า Default จะช่วยให้เว็บไซต์ของคุณมีความสอดคล้องกับเว็บไซต์อื่นๆ ที่ใช้ Tailwind CSS และยังช่วยให้การทำงานร่วมกับนักพัฒนาคนอื่นง่ายขึ้นอีกด้วย

ตัวอย่าง:

<div class="text-sm md:text-base lg:text-lg">
  ข้อความนี้จะมีขนาดเปลี่ยนไปตามขนาดหน้าจอ
</div>

ในตัวอย่างนี้ ข้อความจะมีขนาด text-sm (small) บนหน้าจอขนาดเล็กกว่า 640px, text-base (base) บนหน้าจอขนาด 640px ขึ้นไป และ text-lg (large) บนหน้าจอขนาด 1024px ขึ้นไป

การปรับ Layout ตามขนาดหน้าจอ

การปรับ Layout คือหัวใจสำคัญของการสร้าง Responsive Design Tailwind CSS มี Utility Classes มากมายที่ช่วยให้เราปรับ Layout ได้อย่างง่ายดาย ไม่ว่าจะเป็น Grid, Flexbox หรือ Block

Grid Layout:

สมมติว่าเราต้องการสร้าง Layout ที่มี 2 คอลัมน์บนหน้าจอขนาดใหญ่ แต่ให้แสดงผลเป็น 1 คอลัมน์บนหน้าจอขนาดเล็ก เราสามารถใช้คลาส grid, grid-cols-* และ Breakpoints ร่วมกันได้

<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
  <div>
    <p>คอลัมน์ที่ 1</p>
  </div>
  <div>
    <p>คอลัมน์ที่ 2</p>
  </div>
</div>

ในตัวอย่างนี้ grid-cols-1 จะกำหนดให้มี 1 คอลัมน์บนหน้าจอขนาดเล็ก และ md:grid-cols-2 จะกำหนดให้มี 2 คอลัมน์บนหน้าจอขนาดกลางขึ้นไป gap-4 คือระยะห่างระหว่างคอลัมน์

Flexbox Layout:

Flexbox ก็เป็นอีกหนึ่งเครื่องมือที่ทรงพลังในการสร้าง Layout ที่ยืดหยุ่น ตัวอย่างเช่น เราสามารถเปลี่ยนทิศทางการเรียงตัวขององค์ประกอบจากแนวนอนเป็นแนวตั้งเมื่อหน้าจอเล็กลงได้

<div class="flex flex-col md:flex-row items-center">
  <img src="logo.png" alt="Logo" class="w-32 h-32 mb-4 md:mb-0 md:mr-4">
  <p>ข้อความข้าง Logo</p>
</div>

ในตัวอย่างนี้ flex-col จะกำหนดให้องค์ประกอบเรียงตัวในแนวตั้ง (column) บนหน้าจอขนาดเล็ก และ md:flex-row จะกำหนดให้เรียงตัวในแนวนอน (row) บนหน้าจอขนาดกลางขึ้นไป mb-4 และ md:mb-0 md:mr-4 ใช้สำหรับปรับ Margin ให้เหมาะสมกับแต่ละขนาดหน้าจอ

Trade-off: การเลือกใช้ Grid หรือ Flexbox ขึ้นอยู่กับความซับซ้อนของ Layout หาก Layout มีความซับซ้อนและต้องการการควบคุมที่ละเอียด Grid อาจเป็นตัวเลือกที่ดีกว่า แต่หากต้องการ Layout ที่ยืดหยุ่นและปรับตัวได้ง่าย Flexbox ก็เป็นทางเลือกที่น่าสนใจ

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

บางครั้งเราอาจต้องการซ่อนหรือแสดงองค์ประกอบบางอย่างบนหน้าจอขนาดต่างๆ Tailwind CSS มี Utility Classes hidden และ block (หรือ inline, inline-block, flex, grid) ที่ช่วยให้เราทำสิ่งนี้ได้

<div class="md:hidden">
  <p>ข้อความนี้จะถูกซ่อนบนหน้าจอขนาดกลางขึ้นไป</p>
</div>

<div class="hidden md:block">
  <p>ข้อความนี้จะถูกแสดงบนหน้าจอขนาดกลางขึ้นไป</p>
</div>

ในตัวอย่างนี้ md:hidden จะซ่อนองค์ประกอบเมื่อหน้าจอมีขนาดกลางขึ้นไป และ hidden md:block จะซ่อนองค์ประกอบบนหน้าจอขนาดเล็ก และแสดงผลบนหน้าจอขนาดกลางขึ้นไป

ตัวอย่างการใช้งานจริง: การซ่อน Navigation Menu บน Desktop และแสดงเป็น Hamburger Menu บน Mobile

<nav class="bg-gray-100 py-4">
  <div class="container mx-auto flex items-center justify-between">
    <a href="#" class="text-xl font-bold">Logo</a>

    <div class="hidden md:flex items-center space-x-4">
      <a href="#" class="hover:text-gray-500">หน้าแรก</a>
      <a href="#" class="hover:text-gray-500">เกี่ยวกับเรา</a>
      <a href="#" class="hover:text-gray-500">บริการ</a>
      <a href="#" class="hover:text-gray-500">ติดต่อ</a>
    </div>

    <button class="md:hidden">
      <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path></svg>
    </button>
  </div>
</nav>

ในตัวอย่างนี้ Navigation Links จะถูกซ่อนบนหน้าจอขนาดเล็ก (hidden md:flex) และแสดงผลบนหน้าจอขนาดกลางขึ้นไป ส่วน Hamburger Button จะถูกซ่อนบนหน้าจอขนาดกลางขึ้นไป (md:hidden) และแสดงผลบนหน้าจอขนาดเล็ก

แนวปฏิบัติที่ดี: หลีกเลี่ยงการใช้ hidden และ block มากเกินไป เพราะอาจทำให้โค้ดซับซ้อนและยากต่อการบำรุงรักษา พยายามใช้ Utility Classes อื่นๆ เช่น margin, padding หรือ width เพื่อปรับ Layout ให้เหมาะสมกับขนาดหน้าจอต่างๆ แทน

สรุป

การสร้าง Responsive Design เป็นทักษะที่สำคัญสำหรับนักพัฒนา Frontend ทุกคน Tailwind CSS ช่วยให้เราสร้าง Responsive Design ได้อย่างง่ายดายด้วย Breakpoints และ Utility Classes ที่หลากหลาย ในบทความนี้ เราได้เรียนรู้การใช้ Breakpoints, การปรับ Layout ด้วย Grid และ Flexbox และการซ่อน/แสดงองค์ประกอบ หวังว่าความรู้เหล่านี้จะเป็นประโยชน์ในการสร้างเว็บไซต์ที่สวยงามและใช้งานง่ายบนทุกอุปกรณ์

ในบทความถัดไป เราจะมาเรียนรู้เทคนิคเพิ่มเติมในการปรับแต่ง Tailwind CSS ให้เข้ากับความต้องการของโปรเจกต์ของคุณมากยิ่งขึ้น รวมถึงการใช้งาน Plugins และ Customization Options ต่างๆ

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る