メインコンテンツへ移動

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

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

การสร้าง Tooltips และ Popovers ด้วย Tailwind CSS

บทความนี้สอนวิธีการสร้าง Tooltips และ Popovers ที่สวยงามและใช้งานง่ายโดยใช้ Tailwind CSS ซึ่งเป็นองค์ประกอบ UI ที่ช่วยแสดงข้อมูลเพิ่มเติมแก่ผู้ใช้เมื่อโต้ตอบกับ...

การสร้าง Tooltips และ Popovers ด้วย Tailwind CSS

ในบทความนี้ เราจะมาเรียนรู้วิธีการสร้าง Tooltips และ Popovers ที่สวยงามและใช้งานง่ายด้วย Tailwind CSS Tooltips และ Popovers เป็นองค์ประกอบ UI ที่สำคัญ ช่วยให้เราสามารถแสดงข้อมูลเพิ่มเติมหรือคำแนะนำแก่ผู้ใช้เมื่อพวกเขาโต้ตอบกับองค์ประกอบบางอย่างบนหน้าเว็บ

Tooltips คืออะไร?

Tooltips คือข้อความสั้นๆ ที่ปรากฏขึ้นเมื่อผู้ใช้เลื่อนเมาส์ไปวางเหนือองค์ประกอบใดองค์ประกอบหนึ่ง มักใช้เพื่ออธิบายฟังก์ชันการทำงานขององค์ประกอบนั้น หรือให้ข้อมูลเพิ่มเติมอย่างรวดเร็ว

Popovers คืออะไร?

Popovers คล้ายกับ Tooltips แต่มีความซับซ้อนกว่า สามารถบรรจุเนื้อหาได้มากกว่า เช่น ข้อความ, รูปภาพ, หรือแม้แต่แบบฟอร์ม Popovers มักจะถูกทริกเกอร์ด้วยการคลิก หรือการกระทำอื่นๆ นอกเหนือจากการวางเมาส์

ข้อดีของการใช้ Tailwind CSS ในการสร้าง Tooltips และ Popovers

  • รวดเร็วและง่ายดาย: Tailwind CSS ช่วยให้เราสามารถสร้าง Tooltips และ Popovers ได้อย่างรวดเร็วโดยไม่ต้องเขียน CSS เองทั้งหมด
  • ปรับแต่งได้: Tailwind CSS มีคลาสมากมายให้เราเลือกใช้ ทำให้เราสามารถปรับแต่งรูปลักษณ์ของ Tooltips และ Popovers ได้ตามต้องการ
  • Responsive: Tailwind CSS รองรับการออกแบบ Responsive ทำให้ Tooltips และ Popovers ของเราทำงานได้อย่างถูกต้องบนทุกขนาดหน้าจอ
  • Accessibility: Tailwind CSS ช่วยให้เราสามารถสร้าง Tooltips และ Popovers ที่เข้าถึงได้ง่ายสำหรับผู้ใช้งานทุกคน

เริ่มต้นใช้งาน: โครงสร้าง HTML พื้นฐาน

ในการสร้าง Tooltips และ Popovers เราจะต้องมีโครงสร้าง HTML พื้นฐานก่อน ตัวอย่างเช่น:

<div class="relative inline-block text-left">
  <button type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" id="menu-button" aria-expanded="false" aria-haspopup="true">
    คลิกเพื่อแสดง Popover
    <svg class="-mr-1 ml-2 h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
      <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
    </svg>
  </button>

  <div class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none hidden" role="menu" aria-orientation="vertical" aria-labelledby="menu-button" tabindex="-1" id="popover-content">
    <div class="py-1" role="none">
      <a href="#" class="text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900" role="menuitem" tabindex="-1" id="menu-item-0">ตัวเลือกที่ 1</a>
      <a href="#" class="text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900" role="menuitem" tabindex="-1" id="menu-item-1">ตัวเลือกที่ 2</a>
      <a href="#" class="text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900" role="menuitem" tabindex="-1" id="menu-item-2">ตัวเลือกที่ 3</a>
    </div>
  </div>
</div>

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

  • relative บน container หลัก (<div class="relative inline-block text-left">) ทำให้เราสามารถกำหนดตำแหน่งของ Popover ได้อย่างแม่นยำ
  • absolute บน Popover content (<div class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg ... hidden">) กำหนดให้ Popover อยู่ในตำแหน่งที่แน่นอน
  • hidden บน Popover content ทำให้ Popover ถูกซ่อนไว้ในตอนแรก
  • id ถูกกำหนดให้กับ button และ Popover content เพื่อใช้ในการจัดการด้วย JavaScript

การใช้ JavaScript เพื่อควบคุมการแสดงผล

เราจำเป็นต้องใช้ JavaScript เพื่อสลับการแสดงผลของ Tooltips และ Popovers ตัวอย่าง JavaScript ง่ายๆ:

const button = document.getElementById('menu-button');
const popover = document.getElementById('popover-content');

button.addEventListener('click', () => {
  popover.classList.toggle('hidden');
});

โค้ดนี้จะเพิ่ม event listener ให้กับ button เมื่อ button ถูกคลิก class hidden จะถูก toggle บน Popover content ทำให้ Popover ปรากฏหรือซ่อน

การปรับแต่ง Styles ด้วย Tailwind CSS

Tailwind CSS มีคลาสมากมายให้เราใช้ในการปรับแต่งรูปลักษณ์ของ Tooltips และ Popovers ตัวอย่างเช่น:

  • ขนาด: ใช้คลาสเช่น w-48, w-64, w-full เพื่อกำหนดความกว้าง
  • สี: ใช้คลาสเช่น bg-white, bg-gray-100, text-gray-700 เพื่อกำหนดสีพื้นหลังและสีข้อความ
  • Shadow: ใช้คลาสเช่น shadow-md, shadow-lg เพื่อเพิ่มเงา
  • Border: ใช้คลาสเช่น border border-gray-300, rounded-md เพื่อกำหนดขอบ
  • Padding: ใช้คลาสเช่น px-4, py-2 เพื่อกำหนดระยะห่างภายใน
  • Positioning: ใช้คลาสเช่น absolute, relative, top-0, left-0, right-0 เพื่อกำหนดตำแหน่ง
  • Transition: ใช้คลาสเช่น transition-opacity, duration-200 เพื่อเพิ่ม animation

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

<div class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none hidden" role="menu" aria-orientation="vertical" aria-labelledby="menu-button" tabindex="-1" id="popover-content">
  <div class="py-1" role="none">
    <a href="#" class="text-gray-700 block px-4 py-2 text-sm hover:bg-gray-100 hover:text-gray-900" role="menuitem" tabindex="-1" id="menu-item-0">ตัวเลือกที่ 1</a>
    ...
  </div>
</div>

ในตัวอย่างนี้ เราได้ใช้คลาสต่างๆ เพื่อกำหนดขนาด, สี, เงา, และขอบของ Popover

การสร้าง Tooltips

การสร้าง Tooltips คล้ายกับการสร้าง Popovers แต่โดยทั่วไป Tooltips จะง่ายกว่าและมักจะแสดงเมื่อวางเมาส์ ตัวอย่าง:

<div class="relative inline-block">
  <button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
    Hover me
  </button>
  <div class="absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 bg-gray-800 text-white text-sm py-1 px-2 rounded shadow-md opacity-0 transition-opacity duration-300 hover:opacity-100">
    นี่คือ Tooltip!
  </div>
</div>

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

  • relative บน container หลักเพื่อให้ Tooltip สามารถถูกกำหนดตำแหน่งได้อย่างถูกต้อง
  • absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 กำหนดตำแหน่งของ Tooltip ให้อยู่ด้านบนของ button และกึ่งกลาง
  • opacity-0 transition-opacity duration-300 hover:opacity-100 ทำให้ Tooltip โปร่งใสในตอนแรก และค่อยๆ ปรากฏเมื่อวางเมาส์

การปรับปรุง Accessibility

เพื่อให้ Tooltips และ Popovers ของเราเข้าถึงได้ง่ายสำหรับผู้ใช้งานทุกคน เราควรคำนึงถึงสิ่งต่อไปนี้:

  • ใช้ aria-describedby: เชื่อมโยงองค์ประกอบที่ทริกเกอร์ Tooltip หรือ Popover กับเนื้อหาของ Tooltip หรือ Popover โดยใช้ aria-describedby
  • Keyboard Navigation: ตรวจสอบให้แน่ใจว่าผู้ใช้สามารถเข้าถึงและใช้งาน Tooltips และ Popovers ได้โดยใช้ Keyboard
  • Focus Management: จัดการ Focus อย่างถูกต้องเมื่อ Popover เปิดขึ้น เพื่อให้ผู้ใช้สามารถนำทางภายใน Popover ได้

ตัวอย่างการใช้ aria-describedby:

<button aria-describedby="tooltip-description" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  Hover me
</button>
<div id="tooltip-description" role="tooltip" class="absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 bg-gray-800 text-white text-sm py-1 px-2 rounded shadow-md opacity-0 transition-opacity duration-300 hover:opacity-100">
  นี่คือ Tooltip!
</div>

ในตัวอย่างนี้ เราได้เพิ่ม aria-describedby="tooltip-description" ให้กับ button และกำหนด role="tooltip" ให้กับ Tooltip content

สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการสร้าง Tooltips และ Popovers ที่สวยงามและใช้งานง่ายด้วย Tailwind CSS เราได้เรียนรู้เกี่ยวกับโครงสร้าง HTML พื้นฐาน, การใช้ JavaScript เพื่อควบคุมการแสดงผล, การปรับแต่ง Styles ด้วย Tailwind CSS, และการปรับปรุง Accessibility Tooltips และ Popovers เป็นองค์ประกอบ UI ที่มีประโยชน์มาก และ Tailwind CSS ช่วยให้เราสามารถสร้างองค์ประกอบเหล่านี้ได้อย่างรวดเร็วและง่ายดาย

Office.in.th Custom Service

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

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

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