ตัวแปร CSS สำหรับสลับธีม
กำหนดชุดสีทั้งหมดด้วยพร็อพเพอร์ตีแบบกำหนดเองของ CSS และสลับธีมด้วยการสลับแอตทริบิวต์ข้อมูล
ตัวแปร 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตรวจจับชุดสีของระบบ
- ตัวแปร CSS สำหรับสลับธีม
- React Context สำหรับสถานะธีม
- การคงธีมไว้และป้องกันหน้ากระพริบ