Skip to main content
0

สวัสดีทุกคนครับ! สำหรับในบทความนี้ผมจะพาทุกคนไปเรียนรู้การเปลี่ยนสีธีมง่ายๆด้วย DaisyUI กันนะครับ หากใครเคยใช้ DaisyUI แล้วก็คงรู้ว่ามันเป็นเครื่องมือที่ดีมากๆ ที่ช่วยให้การตกแต่งเว็บไซต์ให้เป็นเรื่องง่าย เนื่องจากมี Component ที่หลากหลายและช่วยลดความซับซ้อนการใส่หลายๆ class ในแต่ละ tag แล้วสิ่งที่น่าสนใจคือการเปลี่ยนสีธีมของเว็บไซต์ที่ง่ายมาก หากพร้อมแล้วก็มาเริ่มต้นกันเลย!!!



DaisyUI คืออะไร? 🌼

DaisyUI เป็น plugin ของ Tailwind CSS ที่มี Component มาให้เราได้เลือกใช้มากกว่า 55 Component ซึ่งมีการติดตั้งที่แสนจะง่าย นิยมใช้งานกันอย่างแพร่หลายและรองรับกับหลากหลาย Framework อีกด้วย

เขียน Class ที่น้อยลง เพิ่มประสิทธิภาพให้มากขึ้น🔝

การใช้งาน DaisyUI ร่วมกับ Tailwind CSS นั้นช่วยลดความซับซ้อนในการเขียน Class Name ลงอย่างมากและการลดขนาดไฟล์ CSS ลงก็จะทำให้เว็บไซต์โหลดเร็วขึ้นได้ถึง 70% หรือมากกว่านั้น ซึ่งเป็นประโยชน์อย่างมากต่อประสบการณ์การใช้งานของผู้ใช้งานที่ต้องการความรวดเร็วและประสิทธิภาพในการโหลดเว็บไซต์อีกด้วยนั้นเอง

วิธีการติดตั้ง

หากโปรเจคของเราได้ทำการลง Tailwind CSS เป็นที่เรียบร้อยแล้วก็สามารถลง DaisyUI เพิ่มได้ง่ายๆด้วยคำสั่ง

npm i -D daisyui@latest

จากนั้นเพิ่ม DaisyUI ในไฟล์ tailwind.config.js

module.exports = {
  //...
  plugins: [require("daisyui")], // เพิ่มการ import DaisyUI
}

และหากใครต้องงการใช้ CND ให้เพิ่มในแท็ก head ของ HTML (วิธีนี้ไม่เหมาะกับการสร้างโปรเจคเนื่องจากจะทำให้ขนาดไฟล์ใหญ่และไม่สามารถ Config เพิ่มเติมได้)

<link href="https://cdn.jsdelivr.net/npm/daisyui@4.10.1/dist/full.min.css" 
      rel="stylesheet" type="text/css" />
<script src="https://cdn.tailwindcss.com"></script>

หลังจากเพิ่มเสร็จเรียบร้อยแล้วสีพื้นหลังเว็บไซต์ของเราก็จะถูกเปลี่ยนเป็นสีธีมของ DaisyUI

ธีมสีใน DaisyUI

ในตัวของ DaisyUI นั้นมีธีมมาให้เราได้เลือกใช้กันหลากหลายซึ่งเราสามารถเลือกดูได้ที่ daisyui.com/docs/themes

แล้วเราจะหยิบมาใช้ยังไงล่ะ?

วิธีการเพิ่มธีมสีในโปรเจคของเราจะเริ่มโดยการเพิ่มชื่อธีมลงในไฟล์ tailwind.config.js

/** @type {import('tailwindcss').Config} */
export default {
  content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
  theme: {
    extend: { },
  },
  plugins: [require("daisyui")],
  daisyui: {
    themes: ["light", "dark", "valentine"], //เพิ่มชื่อธีมที่เราต้องการ
  },
};

หลักจากที่เราเพิ่มธีมสีแล้วเราก็จะมาเรียกใช้ในหน้าเว็บโดยการเพิ่ม attribute data-theme แล้วตามด้วยชื่อธีมที่เราต้องการให้กับแท็ก HTML

<!doctype html>
<html data-theme="valentine">
    <!-- ส่วนของ head และ body -->
</html> 

ผลลัพธ์ที่ได้

แล้วถ้าเราอยากใช้ธีมสีของตัวเองล่ะ ต้องทำยังไง?

หากเรามีธีมสีของเราเองอยู่แล้วหรืออยากสร้างธีมสีของเราเองที่ daisyui.com/theme-generator แล้วนำมาเพิ่มที่ไฟล์ tailwind.config.js

/** @type {import('tailwindcss').Config} */
export default {
  content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
  theme: {
    extend: {},
  },
  daisyui: {
    themes: [
      {
        // ธีมที่เราสร้างเอง
        mytheme: {
          primary: "#e96d7b",
          secondary: "#a991f7",
          accent: "#66b1b3",
          neutral: "#af4670",
          "base-100": "#fae7f4",
          info: "#ff00ff",
          success: "#487e80",
          warning: "#ff0000",
          error: "#9c4952",
        },
      },
      "light",
      "dark",
      "valentine",
    ],
  },
  plugins: [require("daisyui")],
};

จากนั้นก็เปลี่ยนสีธีมที่ tag HTML

<!doctype html>
<html data-theme="mytheme">
    <!-- ส่วนของ head และ body -->
</html> 

เริ่มการเปลี่ยนสีธีมกัน

ใน DaisyUI มี Component ที่สามารถจัดการเปลี่ยนสีธีมที่ชื่อว่า Theme Controller เราสามารถทำปุ่มเปลี่ยนสีธีมง่าย ๆ ด้วยการเพิ่ม tag input ที่เป็นประเภท checkbox ดังนี้

<!-- value ให้เท่ากับชื่อธีมที่เราต้องการที่จะเปลี่ยนไป และเพิ่มชื่อ class ที่มีชื่อว่า theme-controller สำหรับตั้งให้เป็นtagเปลี่ยนธีม -->
<input type="checkbox" value="mytheme" class="toggle theme-controller"/>

และเรายังสามารถเพิ่ม tag label ทำให้เป็นปุ่มที่คอยรับการ Click แล้วค่อยส่งไป tag input ได้อีกด้วย (ในตัวอย่างนี้ ผมจะตั้งธีมหลักให้เป็น valentine แล้วให้เปลี่ยนไปเป็น mytheme ที่ผมสร้างขึ้นเองนะครับ)

<label class="btn btn-circle btn-lg btn-primary text-white drop-shadow-2xl swap swap-rotate">
  
  <!-- ซ่อน checkbox ไว้เพื่อควบคุม -->
  <input type="checkbox" class="theme-controller" value="mytheme" />

  <!-- icon ดวงอาทิตย์ -->
  <svg class="swap-off fill-current w-10 h-10" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z"/></svg>
  
  <!-- icon พระจันทร์ -->
  <svg class="swap-on fill-current w-10 h-10" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z"/></svg>
  
</label>

ผลลัพธ์ที่ได้


เลือกสีธีมที่หลากหลาย

เราสามารถสร้างการเลือกหลากหลายสีธีมได้ด้วยการใช้ input ประเภท radio เพื่อให้ผู้ใช้งานสามารถเลือกสีธีมที่ตนเองชื่นชอบได้

<!-- form-control คือ container ของแต่ละ input  -->
<div className="form-control">
  <label className="label cursor-pointer gap-4">
    <span className="label-text">Default</span>
    <!-- value default คือ ธีมหลักที่เราตั้งค่าไว้ซึ่งของผมตั้งไว้เป็น valentine นะครับ -->
    <input
      type="radio"
      name="theme-radios"
      className="radio theme-controller"
      value="default"
    />
  </label>
</div>
<!-- ส่วนล่างนี้คือธีมที่ผู้ใช้เลือกเปลี่ยนได้ -->
<div className="form-control">
  <label className="label cursor-pointer gap-4">
    <span className="label-text">Light</span>
    <input
      type="radio"
      name="theme-radios"
      className="radio theme-controller"
      value="light"
    />
  </label>
</div>
<div className="form-control">
  <label className="label cursor-pointer gap-4">
    <span className="label-text">Dark</span>
    <!-- เรายังสามารถใช้ธีมที่เราสร้างไว้มาใช้ได้เช่นเดิม -->
    <input
      type="radio"
      name="theme-radios"
      className="radio theme-controller"
      value="mytheme"
    />
  </label>
</div>
<div className="form-control">
  <label className="label cursor-pointer gap-4">
    <span className="label-text">Black</span>
    <input
      type="radio"
      name="theme-radios"
      className="radio theme-controller"
      value="black"
    />
  </label>
</div>
<div className="form-control">
  <label className="label cursor-pointer gap-4">
    <span className="label-text">Retro</span>
    <input
      type="radio"
      name="theme-radios"
      className="radio theme-controller"
      value="retro"
    />
  </label>
</div>

ผลลัพธ์ที่ได้

สรุป

เป็นยังไงกันบ้างครับ สำหรับการใช้ธีมและการเปลี่ยนสีธีมใน DaisyUI ง่ายและสะดวกมากเลยใช่ไหมครับ ทุกคนสามารถเลือกและปรับแต่งได้โดยใช้ Tailwind CSS เข้าช่วยจะทำให้ทุกคนสามารถปรับแต่งรูปแบบของเว็บไซต์ได้อย่างอิสระมากยิ่งขึ้นและหวังว่าบทความนี้จะเป็นประโยชน์ต่อทุกคนนะครับ

อ้างอิง

  1. ประสิทธิภาพของ DaisyUI ที่ใช้ร่วมกับ Tailwind และจำนวน Component สืบค้นเมื่อเมื่อวันที่ 8 เมษายน 2567
    จาก: daisyui.com
  2. วิธีการติดตั้งและ Framework ที่รองรับ สืบค้นเมื่อเมื่อวันที่ 8 เมษายน 2567
    จาก: daisyui.com/docs/install
  3. สีธีมใน DaisyUI สืบค้นเมื่อเมื่อวันที่ 8 เมษายน 2567
    จาก: daisyui.com/docs/themes
  4. สร้างสีธีมใน DaisyUI สืบค้นเมื่อเมื่อวันที่ 8 เมษายน 2567
    จาก: daisyui.com/theme-generator
  5. Component ควบคุมสีธีม สืบค้นเมื่อเมื่อวันที่ 8 เมษายน 2567
    จาก: daisyui.com/components/theme-controller
Aphinan Janta

Author Aphinan Janta

Dev Init Frontend

More posts by Aphinan Janta

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า