メインコンテンツへ移動

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

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

การสร้าง Tabbed Navigation ด้วย Tailwind CSS

บทความนี้อธิบายวิธีการสร้าง tabbed navigation ที่สวยงามและใช้งานง่ายด้วย Tailwind CSS โดยใช้โครงสร้าง HTML พื้นฐานและ JavaScript เพื่อจัดการ active state และการ...

การสร้าง Tabbed Navigation ด้วย Tailwind CSS

Tabbed navigation เป็นองค์ประกอบ UI ที่ช่วยให้ผู้ใช้สามารถสลับไปมาระหว่างกลุ่มเนื้อหาที่เกี่ยวข้องได้อย่างง่ายดาย โดยแต่ละ tab จะแสดงเนื้อหาที่แตกต่างกัน การสร้าง tabbed navigation ที่สวยงามและใช้งานง่ายด้วย Tailwind CSS นั้นเป็นไปได้ง่ายและรวดเร็ว บทความนี้จะแนะนำวิธีการสร้าง tabbed navigation โดยใช้ Tailwind CSS ร่วมกับ JavaScript เพื่อจัดการ active state

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น คุณควรมีความรู้พื้นฐานเกี่ยวกับ:

  • Tailwind CSS: ความเข้าใจเกี่ยวกับ utility classes และวิธีการใช้งาน
  • HTML: โครงสร้างพื้นฐานของ HTML
  • JavaScript (Optional): ความรู้พื้นฐานเกี่ยวกับ JavaScript เพื่อจัดการ active state

ขั้นตอนที่ 1: โครงสร้าง HTML

เริ่มต้นด้วยการสร้างโครงสร้าง HTML สำหรับ tabbed navigation ของคุณ เราจะใช้ <ul> สำหรับ tab headers และ <div> สำหรับ tab content แต่ละส่วน:

<div class="container mx-auto mt-8">
  <ul class="flex border-b" id="tab-headers">
    <li class="mr-2">
      <a href="#" class="bg-white inline-block border-l border-t border-r rounded-t py-2 px-4 text-blue-500 font-semibold" data-tab="tab1">Tab 1</a>
    </li>
    <li class="mr-2">
      <a href="#" class="bg-white inline-block py-2 px-4 text-blue-500 hover:text-blue-800 font-semibold" data-tab="tab2">Tab 2</a>
    </li>
    <li class="mr-2">
      <a href="#" class="bg-white inline-block py-2 px-4 text-blue-500 hover:text-blue-800 font-semibold" data-tab="tab3">Tab 3</a>
    </li>
  </ul>

  <div id="tab-contents">
    <div id="tab1" class="p-4">
      <h2 class="text-2xl font-bold mb-2">Content for Tab 1</h2>
      <p>This is the content of Tab 1. You can add any HTML elements here.</p>
    </div>
    <div id="tab2" class="hidden p-4">
      <h2 class="text-2xl font-bold mb-2">Content for Tab 2</h2>
      <p>This is the content of Tab 2. Feel free to customize it.</p>
    </div>
    <div id="tab3" class="hidden p-4">
      <h2 class="text-2xl font-bold mb-2">Content for Tab 3</h2>
      <p>This is the content of Tab 3.  Add your desired content here.</p>
    </div>
  </div>
</div>

ในโค้ดด้านบน:

  • container mx-auto mt-8: จัดกึ่งกลางและเพิ่ม margin ด้านบน
  • flex border-b: สร้างแถว flexbox และเพิ่มเส้นขอบด้านล่าง
  • mr-2: เพิ่ม margin ด้านขวาให้กับแต่ละ tab header
  • bg-white inline-block ...: กำหนด styles สำหรับ tab header (พื้นหลังสีขาว, inline-block, เส้นขอบ, ตัวอักษรสีน้ำเงิน)
  • data-tab: Attribute ที่ใช้ในการระบุ tab content ที่เกี่ยวข้อง
  • hidden: Tailwind class ที่ใช้ซ่อน tab content
  • p-4: เพิ่ม padding ให้กับ tab content

ขั้นตอนที่ 2: การจัดการ Active State ด้วย JavaScript

เราจะใช้ JavaScript เพื่อจัดการ active state ของ tabbed navigation เมื่อผู้ใช้คลิกที่ tab header, content ที่เกี่ยวข้องจะปรากฏขึ้น และ tab header จะถูกไฮไลท์

document.addEventListener('DOMContentLoaded', function() {
  const tabHeaders = document.getElementById('tab-headers');
  const tabContents = document.getElementById('tab-contents');

  tabHeaders.addEventListener('click', function(event) {
    if (event.target.tagName === 'A') {
      event.preventDefault();

      // Deactivate all tabs and hide all content
      Array.from(tabHeaders.children).forEach(li => {
        li.querySelector('a').classList.remove('bg-white', 'border-l', 'border-t', 'border-r', 'rounded-t', 'text-blue-500');
        li.querySelector('a').classList.add('hover:text-blue-800');
      });
      Array.from(tabContents.children).forEach(div => {
        div.classList.add('hidden');
      });

      // Activate the clicked tab and show its content
      const tabId = event.target.dataset.tab;
      event.target.classList.remove('hover:text-blue-800');
      event.target.classList.add('bg-white', 'border-l', 'border-t', 'border-r', 'rounded-t', 'text-blue-500');
      document.getElementById(tabId).classList.remove('hidden');
    }
  });

  // Initially activate the first tab
  const firstTab = tabHeaders.querySelector('li:first-child a');
  if (firstTab) {
    firstTab.classList.remove('hover:text-blue-800');
    firstTab.classList.add('bg-white', 'border-l', 'border-t', 'border-r', 'rounded-t', 'text-blue-500');
    document.getElementById(firstTab.dataset.tab).classList.remove('hidden');
  }
});

ในโค้ดด้านบน:

  • เราใช้ DOMContentLoaded เพื่อให้แน่ใจว่า DOM โหลดเสร็จก่อน JavaScript จะทำงาน
  • เราเพิ่ม event listener ให้กับ tab-headers เพื่อตรวจจับการคลิกที่ tab header
  • เมื่อมีการคลิก, เราจะ deactivate tabs ทั้งหมดโดยการลบ class ที่เกี่ยวข้องและเพิ่ม class hidden ให้กับ tab content ทั้งหมด
  • จากนั้นเราจะ activate tab ที่ถูกคลิกโดยการเพิ่ม class ที่เกี่ยวข้องและลบ class hidden ออกจาก tab content ที่เกี่ยวข้อง
  • เรายัง activate tab แรกเมื่อหน้าเว็บโหลด

ขั้นตอนที่ 3: การปรับแต่ง Styles ด้วย Tailwind CSS

คุณสามารถปรับแต่ง styles ของ tabbed navigation ได้ตามต้องการโดยใช้ Tailwind CSS utility classes ตัวอย่างเช่น คุณสามารถเปลี่ยนสี, ขนาดตัวอักษร, ระยะห่าง, และอื่นๆ

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

  • เปลี่ยนสีพื้นหลังของ active tab: bg-gray-100
  • เพิ่ม shadow ให้กับ tab headers: shadow-md
  • เปลี่ยนสีตัวอักษรของ active tab: text-green-600
  • เพิ่ม padding ให้กับ tab content: p-6

กรณีใช้งานจริง

  • Dashboard: ใช้ tabbed navigation เพื่อจัดระเบียบข้อมูลและสถิติที่แตกต่างกัน
  • Product Page: ใช้ tabbed navigation เพื่อแสดงรายละเอียดสินค้า, รีวิว, และคำถามที่พบบ่อย
  • Settings Page: ใช้ tabbed navigation เพื่อจัดระเบียบการตั้งค่าต่างๆ

ข้อผิดพลาดที่พบบ่อย

  • ลืมเพิ่ม event.preventDefault(): ทำให้หน้าเว็บรีเฟรชเมื่อคลิกที่ tab header
  • class hidden ไม่ถูกลบออก: ทำให้ tab content ไม่ปรากฏขึ้น
  • ลืม activate tab แรกเมื่อหน้าเว็บโหลด: ทำให้ไม่มี tab ใดถูกเลือกเมื่อหน้าเว็บโหลดครั้งแรก
  • การใช้ id ซ้ำกัน: ทำให้ JavaScript ทำงานผิดพลาด

แนวคิดเชิงระบบและ Pattern ทั่วไป

Tabbed navigation สามารถนำไปประยุกต์ใช้ได้หลากหลายรูปแบบ ขึ้นอยู่กับความต้องการของโปรเจกต์ ตัวอย่างเช่น:

  • Vertical Tabs: จัดเรียง tabs ในแนวตั้งแทนแนวนอน
  • Icon Tabs: ใช้ icons แทนข้อความใน tab headers
  • Animated Tabs: เพิ่ม animations เมื่อสลับ tab
  • Tabs with Dropdowns: เพิ่ม dropdown menus ใน tab headers

สรุป

การสร้าง tabbed navigation ด้วย Tailwind CSS นั้นเป็นวิธีที่รวดเร็วและมีประสิทธิภาพในการจัดระเบียบเนื้อหาบนหน้าเว็บ ด้วยการใช้ Tailwind CSS utility classes และ JavaScript, คุณสามารถสร้าง tabbed navigation ที่สวยงามและใช้งานง่ายได้ตามต้องการ อย่าลืมปรับแต่ง styles และเพิ่มฟังก์ชันการทำงานเพิ่มเติมเพื่อให้ tabbed navigation ของคุณตอบโจทย์ความต้องการของโปรเจกต์ของคุณมากที่สุด

Office.in.th Custom Service

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

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

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