メインコンテンツへ移動

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

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

การสร้าง Progress Bars ด้วย Tailwind CSS

บทความนี้อธิบายวิธีการสร้าง Progress bar ที่สวยงามและใช้งานได้จริงด้วย Tailwind CSS โดยเริ่มต้นจากโครงสร้าง HTML พื้นฐาน, การเพิ่ม Label แสดงเปอร์เซ็นต์, การใช้...

การสร้าง Progress Bars ด้วย Tailwind CSS

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

โครงสร้าง HTML พื้นฐาน

เริ่มต้นด้วยการสร้างโครงสร้าง HTML พื้นฐานสำหรับ Progress bar ของเรา โดยเราจะใช้ <div> สองตัว ตัวแรกเป็น container สำหรับ Progress bar ทั้งหมด และตัวที่สองเป็น bar จริงๆ ที่จะแสดงความคืบหน้า

<div class="bg-gray-200 rounded-full h-2.5 dark:bg-gray-700">
  <div class="bg-blue-600 h-2.5 rounded-full" style="width: 45%"></div>
</div>

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

  • bg-gray-200: กำหนดสีพื้นหลังของ container เป็นสีเทาอ่อน
  • rounded-full: ทำให้ขอบของ container โค้งมน
  • h-2.5: กำหนดความสูงของ container
  • dark:bg-gray-700: กำหนดสีพื้นหลังของ container เป็นสีเทาเข้มเมื่ออยู่ใน dark mode
  • bg-blue-600: กำหนดสีพื้นหลังของ bar เป็นสีน้ำเงิน
  • h-2.5: กำหนดความสูงของ bar ให้เท่ากับ container
  • rounded-full: ทำให้ขอบของ bar โค้งมน
  • style="width: 45%": กำหนดความกว้างของ bar เป็น 45% ซึ่งแสดงถึงความคืบหน้า

การเพิ่ม Label แสดงเปอร์เซ็นต์

เพื่อให้ Progress bar มีประโยชน์มากยิ่งขึ้น เราจะเพิ่ม label เพื่อแสดงเปอร์เซ็นต์ความคืบหน้า

<div class="flex items-center justify-between mb-2">
  <span class="text-sm font-medium text-blue-700 dark:text-white">Progress</span>
  <span class="text-sm font-medium text-blue-700 dark:text-white">45%</span>
</div>
<div class="bg-gray-200 rounded-full h-2.5 dark:bg-gray-700">
  <div class="bg-blue-600 h-2.5 rounded-full" style="width: 45%"></div>
</div>

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

  • flex items-center justify-between: จัดเรียง label และเปอร์เซ็นต์ให้อยู่ในบรรทัดเดียวกัน โดยให้ชิดซ้ายและขวา
  • text-sm font-medium text-blue-700 dark:text-white: กำหนดรูปแบบของข้อความ (ขนาดเล็ก, ตัวหนา, สีน้ำเงิน)
  • mb-2: เพิ่ม margin ด้านล่างเพื่อให้มีช่องว่างระหว่าง label และ Progress bar

การใช้งาน JavaScript เพื่ออัปเดต Progress Bar

เพื่อให้ Progress bar สามารถแสดงความคืบหน้าแบบไดนามิก เราจะต้องใช้ JavaScript ในการอัปเดตความกว้างของ bar และเปอร์เซ็นต์ที่แสดง

<div class="flex items-center justify-between mb-2">
  <span class="text-sm font-medium text-blue-700 dark:text-white">Progress</span>
  <span id="progress-percentage" class="text-sm font-medium text-blue-700 dark:text-white">0%</span>
</div>
<div class="bg-gray-200 rounded-full h-2.5 dark:bg-gray-700">
  <div id="progress-bar" class="bg-blue-600 h-2.5 rounded-full" style="width: 0%"></div>
</div>

<script>
  const progressBar = document.getElementById('progress-bar');
  const progressPercentage = document.getElementById('progress-percentage');

  function updateProgress(percentage) {
    progressBar.style.width = `${percentage}%`;
    progressPercentage.textContent = `${percentage}%`;
  }

  // ตัวอย่างการใช้งาน: อัปเดตความคืบหน้าทุกๆ 1 วินาที
  let currentProgress = 0;
  const interval = setInterval(() => {
    currentProgress += 10;
    if (currentProgress >= 100) {
      currentProgress = 100;
      clearInterval(interval); // หยุดเมื่อถึง 100%
    }
    updateProgress(currentProgress);
  }, 1000);
</script>

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

  • เราเพิ่ม id ให้กับ bar (progress-bar) และ label (progress-percentage) เพื่อให้สามารถเข้าถึงได้จาก JavaScript
  • ฟังก์ชัน updateProgress(percentage) จะอัปเดตความกว้างของ bar และเปอร์เซ็นต์ที่แสดงตามค่า percentage ที่ได้รับ
  • เราใช้ setInterval เพื่อจำลองการอัปเดตความคืบหน้าทุกๆ 1 วินาที
  • เมื่อความคืบหน้าถึง 100% เราจะหยุดการอัปเดตโดยใช้ clearInterval

การเพิ่ม CSS Animation

เพื่อทำให้ Progress bar ดูน่าสนใจยิ่งขึ้น เราสามารถเพิ่ม CSS animation เพื่อสร้างความรู้สึกเคลื่อนไหว

#progress-bar {
  transition: width 0.5s ease-in-out;
}

เพิ่ม CSS ด้านบนลงในไฟล์ CSS ของคุณ (หรือภายใน <style> tag ใน HTML) transition property จะทำให้การเปลี่ยนแปลงความกว้างของ bar เป็นไปอย่างราบรื่น

การปรับแต่ง Styles

Tailwind CSS มี utility classes มากมายให้เราเลือกใช้ในการปรับแต่ง styles ของ Progress bar ให้เข้ากับ design ของเว็บไซต์ของเรา

ตัวอย่าง:

  • เปลี่ยนสี: ใช้ bg-red-500, bg-green-500, bg-yellow-500 เพื่อเปลี่ยนสีของ bar
  • เปลี่ยนความสูง: ใช้ h-4, h-6, h-8 เพื่อเปลี่ยนความสูงของ bar
  • เพิ่มเงา: ใช้ shadow-md, shadow-lg เพื่อเพิ่มเงาให้กับ container
  • ปรับแต่งขอบ: ใช้ rounded-sm, rounded-md, rounded-lg เพื่อปรับแต่งความโค้งมนของขอบ
<div class="flex items-center justify-between mb-2">
  <span class="text-sm font-medium text-green-700 dark:text-white">Progress</span>
  <span id="progress-percentage" class="text-sm font-medium text-green-700 dark:text-white">0%</span>
</div>
<div class="bg-gray-200 rounded-md h-4 shadow-md dark:bg-gray-700">
  <div id="progress-bar" class="bg-green-500 h-4 rounded-md" style="width: 0%"></div>
</div>

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

Progress bars สามารถนำไปใช้ในหลายสถานการณ์ ตัวอย่างเช่น:

  • การอัปโหลดไฟล์: แสดงความคืบหน้าของการอัปโหลดไฟล์
  • การดาวน์โหลดไฟล์: แสดงความคืบหน้าของการดาวน์โหลดไฟล์
  • การประมวลผลข้อมูล: แสดงความคืบหน้าของการประมวลผลข้อมูล
  • การโหลดหน้าเว็บ: แสดงความคืบหน้าของการโหลดหน้าเว็บ
  • แบบทดสอบออนไลน์: แสดงความคืบหน้าในการทำแบบทดสอบ

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

  • ลืมใส่ id ให้กับ bar หรือ label ทำให้ JavaScript ไม่สามารถเข้าถึงได้
  • ไม่ได้กำหนด transition ทำให้ animation ไม่ราบรื่น
  • ไม่ได้หยุด setInterval เมื่อความคืบหน้าถึง 100% ทำให้เกิด error
  • ไม่ได้ปรับแต่ง styles ให้เข้ากับ design ของเว็บไซต์

สรุป

ในบทความนี้ เราได้เรียนรู้วิธีการสร้าง Progress bars ที่สวยงามและใช้งานได้จริงด้วย Tailwind CSS โดยใช้ JavaScript และ CSS animations เพื่อสร้างความรู้สึกเคลื่อนไหว Progress bars เป็นส่วนประกอบ UI ที่สำคัญสำหรับการแสดงสถานะความคืบหน้าของงานต่างๆ และสามารถนำไปใช้ในหลายสถานการณ์ หวังว่าบทความนี้จะเป็นประโยชน์และช่วยให้คุณสร้าง Progress bars ที่ดีขึ้นได้

Office.in.th Custom Service

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

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

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