React Academy · บทเรียน

ตัวแปร CSS สำหรับสลับธีม

กำหนดชุดสีทั้งหมดด้วยพร็อพเพอร์ตีแบบกำหนดเองของ CSS และสลับธีมด้วยการสลับแอตทริบิวต์ข้อมูล

บทเรียน 2 จาก 413 ขั้นตอน

ตัวแปร CSS สำหรับสลับธีม เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

การกำหนดโทเค็นสีบน :root

พร็อพเพอร์ตีแบบกำหนดเองของ CSS (ตัวแปร) ที่กำหนดบน :root จะพร้อมใช้งานทั่วทั้งสไตล์ชีต คุณกำหนดชุดสีทั้งหมดเพียงครั้งเดียว ทั้งพื้นหลัง สีข้อความ พื้นผิว และเส้นขอบ แล้วอ้างอิงจากทุกที่ แหล่งข้อมูลจริงเพียงแห่งเดียวนี้ทำให้การสลับธีมเป็นเรื่องง่าย

การแทนที่ธีมมืดด้วย data-theme

เมื่อกำหนดแอตทริบิวต์ data-theme="dark" บน document.documentElement ตัวเลือก CSS อย่าง [data-theme='dark'] จะแทนที่ตัวแปรระดับรากด้วยค่าสำหรับธีมมืด คอมโพเนนต์จะอ้างอิง var(--color-bg) และรับค่าใหม่โดยอัตโนมัติโดยไม่ต้องเปลี่ยนโค้ด

ตัวแปรสำคัญที่ควรกำหนด

อย่างน้อยที่สุด ให้กำหนด --color-bg (พื้นหลังหน้า), --color-text (ข้อความหลัก), --color-primary (สีแบรนด์), --color-surface (พื้นหลังการ์ดหรือแผง) และ --color-border (เส้นแบ่ง) ชุดโทเค็นที่สอดคล้องกันช่วยป้องกันไม่ให้ค่าสีที่กำหนดเฉพาะจุดปรากฏในคอมโพเนนต์

การใช้ตัวแปรในสไตล์ของคอมโพเนนต์

ใน CSS ของคอมโพเนนต์ ให้อ้างอิงตัวแปรเช่น background: var(--color-bg) และ color: var(--color-text) คุณยังสามารถระบุค่าทดแทนได้ด้วย var(--color-bg, #ffffff) เบราว์เซอร์จะประมวลผลตัวแปรในขณะแสดงผล ดังนั้นคลาสเดียวจึงใช้ได้กับทั้งธีมสว่างและธีมมืด

การเปลี่ยนผ่านที่ราบรื่นขณะสลับธีม

เพิ่ม transition: background-color 200ms, color 200ms ให้กับตัวเลือก :root เมื่อแอตทริบิวต์ data-theme เปลี่ยนแปลง องค์ประกอบทั้งหมดที่ใช้ตัวแปร CSS จะเปลี่ยนผ่านไปยังค่าใหม่พร้อมกัน ทำให้ได้ประสบการณ์ที่ดูประณีตโดยไม่ต้องเขียนโค้ดแอนิเมชันด้วย JS

ตัวแปร CSS เทียบกับสไตล์อินไลน์ที่ควบคุมด้วย JS

การจัดการธีมด้วยตัวแปร CSS เหนือกว่าการกำหนดสไตล์อินไลน์จาก JavaScript เบราว์เซอร์จะจัดการคำนวณสไตล์ใหม่โดยตรง ไม่มีการเรนเดอร์ React ใหม่เพิ่มเติมสำหรับคอมโพเนนต์ลูกแต่ละตัวที่ใช้ธีม และลำดับการใช้กฎ CSS จะจัดการการสืบทอดโดยอัตโนมัติ JS เพียงต้องสลับแอตทริบิวต์เดียวบนองค์ประกอบราก

ค่าทดแทนระดับ OS ด้วย prefers-color-scheme

คุณสามารถใช้ตัวแปร CSS ร่วมกับคิวรี @media (prefers-color-scheme: dark) เป็นค่าทดแทนที่ใช้ CSS เพียงอย่างเดียวได้ กำหนดค่าทดแทนสำหรับธีมมืดไว้ภายในมีเดียคิวรี นอกเหนือจากหรือแทนที่ตัวเลือก data-theme วิธีนี้ทำให้โหมดมืดทำงานได้แม้ JavaScript ยังไม่ได้ทำงาน

การใช้ data-theme ร่วมกับค่าทดแทนจากมีเดียคิวรี

แนวทางที่ทนทานที่สุดคือใช้ทั้งสองกลไกร่วมกัน คิวรี @media จะให้ค่าเริ่มต้นตาม OS ส่วนแอตทริบิวต์ data-theme อนุญาตให้ผู้ใช้แทนที่ค่าผ่าน JavaScript เมื่อมีแอตทริบิวต์นี้อยู่ ค่าดังกล่าวจะมีผลเหนือกว่าเนื่องจากมีความจำเพาะเจาะจงสูงกว่า หากไม่มีแอตทริบิวต์ มีเดียคิวรีจะมีผล

รูปภาพในโหมดมืด

สำหรับรูปภาพที่ดูไม่ดีบนพื้นหลังสีเข้ม ให้ใช้องค์ประกอบ picture ของ HTML พร้อมองค์ประกอบลูก source media="(prefers-color-scheme: dark)" เบราว์เซอร์จะเลือกภาพเวอร์ชันมืดโดยอัตโนมัติ สำหรับไอคอน SVG ใน CSS คุณสามารถใช้ filter: invert(1) เป็นการประมาณค่าอย่างรวดเร็วได้

ตัวแปรธีมแบบจำกัดขอบเขต

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

การแก้ไขข้อผิดพลาดของตัวแปร CSS ใน DevTools

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

พร็อพเพอร์ตีแบบกำหนดเองของ CSS สำหรับการกำหนดธีม

ตัวเลือก CSS ใดใช้กำหนดพร็อพเพอร์ตีแบบกำหนดเองส่วนกลางที่มีผลกับเอกสารทั้งหมด

สรุปบทเรียน: ตัวแปร CSS สำหรับการสลับธีม

พร็อพเพอร์ตีแบบกำหนดเองของ CSS บน :root จัดเตรียมระบบโทเค็นส่วนกลางสำหรับธีม สลับแอตทริบิวต์ data-theme บนองค์ประกอบ HTML เพื่อเปลี่ยนธีมได้ทันที เพิ่มการเปลี่ยนผ่าน CSS เพื่อให้แอนิเมชันราบรื่น ใช้มีเดียคิวรี prefers-color-scheme เป็นค่าทดแทนที่ใช้ CSS เพียงอย่างเดียว และหลีกเลี่ยงการแทนที่สไตล์ด้วย JS ในแต่ละคอมโพเนนต์

เริ่มต้นได้ฟรี

เรียนรู้ React ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
88
บทเรียน
324

คำถามที่พบบ่อย

บทเรียน “ตัวแปร CSS สำหรับสลับธีม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวแปร CSS สำหรับสลับธีม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปร CSS สำหรับสลับธีม”

กำหนดชุดสีทั้งหมดด้วยพร็อพเพอร์ตีแบบกำหนดเองของ CSS และสลับธีมด้วยการสลับแอตทริบิวต์ข้อมูล คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวแปร CSS สำหรับสลับธีม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตรวจจับชุดสีของระบบ
  2. ตัวแปร CSS สำหรับสลับธีม
  3. React Context สำหรับสถานะธีม
  4. การคงธีมไว้และป้องกันหน้ากระพริบ
← กลับไปที่ React Academy