การอัปเดตตัวแปรด้วย JavaScript
อัปเดตคุณสมบัติกำหนดเองของ CSS แบบไดนามิกจาก JavaScript โดยใช้ style.setProperty()
การอัปเดตตัวแปรด้วย JavaScript เป็นบทเรียน CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องอัปเดตตัวแปร CSS จาก JS
คุณสมบัติกำหนดเองของ CSS มีการอัปเดตแบบทันทีในเบราว์เซอร์ เมื่อเปลี่ยนค่าผ่าน JavaScript องค์ประกอบทั้งหมดที่ใช้คุณสมบัตินั้นจะอัปเดตทันที จึงรองรับธีมแบบไดนามิก แถบเลื่อนแบบเรียลไทม์ และสไตล์ที่ขับเคลื่อนด้วยสถานะโดยไม่ต้องสลับคลาสจำนวนมาก
การอ่านค่าคุณสมบัติกำหนดเอง
อ่านค่าคุณสมบัติกำหนดเองโดยใช้ getComputedStyle():
<div class="demo" style="background:#3b82f6;color:#fff;padding:16px;">Reading --primary-color</div>
<p>Value: <span id="output">(reading...)</span></p>
<script>
const root = document.documentElement;
const value = getComputedStyle(root)
.getPropertyValue('--primary-color').trim();
console.log(value); // '#3b82f6'
document.getElementById('output').textContent = value;
</script>
การกำหนดค่าคุณสมบัติกำหนดเอง
อัปเดตคุณสมบัติกำหนดเองโดยใช้ style.setProperty() กับองค์ประกอบใดก็ได้:
<div class="card">
Card body
</div>
<script>
// Set globally on :root
document.documentElement.style.setProperty('--primary-color', '#ef4444');
// Set on a specific element
document.querySelector('.card').style.setProperty('--card-bg', 'pink');
</script>
การลบคุณสมบัติกำหนดเอง
ลบการเขียนทับคุณสมบัติ เพื่อย้อนกลับไปใช้ค่าที่ประกาศไว้ใน CSS โดยใช้ style.removeProperty():
<div class="badge">Removing an inline override restores the :root value</div>
<script>
// Simulate an inline override was set, then removed
document.documentElement.style.setProperty('--primary-color', 'crimson');
document.documentElement.style.removeProperty('--primary-color');
// Now the :root CSS value applies again
</script>
รูปแบบตัวสลับธีม
ตัวสลับธีมแบบคลาสสิกที่สลับแอตทริบิวต์ data-theme และกำหนดตัวแปรของแต่ละธีมใน CSS:
<div class="panel">Dark theme applied via data-theme</div>
<script>
document.body.dataset.theme = 'dark';
</script>
แถบความคืบหน้าด้วยตัวแปร CSS
ควบคุมค่าของแถบความคืบหน้าทั้งหมดผ่านตัวแปร CSS ที่กำหนดจาก JavaScript:
<div class="progress-bar"></div>
<script>
function setProgress(pct) {
document.querySelector('.progress-bar')
.style.setProperty('--progress', pct + '%');
}
setProgress(70);
</script>
การติดตามตำแหน่งเมาส์
สร้างเอฟเฟกต์พารัลแลกซ์หรือเอฟเฟกต์ที่ติดตามเคอร์เซอร์ด้วยการอัปเดตตัวแปร CSS สำหรับตำแหน่งเมื่อเมาส์เคลื่อนที่:
<div class="cursor-dot"></div>
<script>
document.addEventListener('mousemove', e => {
document.documentElement.style.setProperty('--mouse-x', e.clientX + 'px');
document.documentElement.style.setProperty('--mouse-y', e.clientY + 'px');
});
</script>
ตัวแปรที่ขับเคลื่อนด้วยการเลื่อน
อัปเดตตัวแปร CSS ตามตำแหน่งการเลื่อนสำหรับแอนิเมชันที่เชื่อมโยงกับการเลื่อน (API สมัยใหม่จัดการเรื่องนี้ได้ดีกว่า แต่การใช้ JS ร่วมกับตัวแปรก็ยังเป็นแนวทางที่เรียบง่าย):
<div style="height: 800px; background: linear-gradient(#f8fafc, #cbd5e1);">
<div class="scroll-fill"></div>
</div>
<script>
window.addEventListener('scroll', () => {
const pct = window.scrollY / (document.body.scrollHeight - window.innerHeight);
document.documentElement.style.setProperty('--scroll', pct);
});
</script>
การตั้งค่าผู้ใช้ด้วย localStorage
บันทึกธีมที่เลือกไว้ใน localStorage และกู้คืนเมื่อโหลดหน้าเว็บ:
<button class="theme-toggle" onclick="toggleTheme()">Toggle theme</button>
<div class="content">Themed content</div>
<script>
// Restore
const saved = localStorage.getItem('theme') || 'light';
document.documentElement.dataset.theme = saved;
// Toggle
function toggleTheme() {
const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark';
document.documentElement.dataset.theme = next;
localStorage.setItem('theme', next);
}
</script>
แอนิเมชัน CSS เทียบกับ JS
สำหรับแอนิเมชันที่ลื่นไหล ควรใช้ทรานซิชัน CSS ที่ตอบสนองต่อการเปลี่ยนแปลงของคุณสมบัติกำหนดเอง แทนลูป requestAnimationFrame ของ JS เบราว์เซอร์จะจัดการการคั่นค่าบนเธรดคอมโพสิตเตอร์
คุณสมบัติแบบระบุชนิดด้วย @property
การลงทะเบียนตัวแปรด้วย @property ทำให้เบราว์เซอร์คั่นค่าตัวแปรนั้นในทรานซิชันได้ ซึ่งจะทำไม่ได้กับคุณสมบัติกำหนดเองที่ไม่ได้ลงทะเบียน:
<div class="track">
<div class="bar"></div>
</div>
ตรวจสอบความเข้าใจอย่างรวดเร็ว
เมธอด JavaScript ใดใช้เปลี่ยนคุณสมบัติกำหนดเองของ CSS บนองค์ประกอบ root
สรุปทบทวน
ใช้ style.setProperty() เพื่ออัปเดตคุณสมบัติกำหนดเองของ CSS จาก JavaScript การเปลี่ยนแปลงจะส่งต่อไปยังองค์ประกอบทั้งหมดที่ใช้คุณสมบัตินั้นทันที รูปแบบนี้ใช้สร้างธีมแบบไดนามิก แถบความคืบหน้าแบบเคลื่อนไหว เอฟเฟกต์ตามเคอร์เซอร์ และแอนิเมชันที่ขับเคลื่อนด้วยการเลื่อน โดยไม่ต้องแก้ไขรายการคลาสหรือสตริงสไตล์ในบรรทัดสำหรับคุณสมบัติหลายรายการ
คำถามที่พบบ่อย
บทเรียน “การอัปเดตตัวแปรด้วย JavaScript” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอัปเดตตัวแปรด้วย JavaScript” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอัปเดตตัวแปรด้วย JavaScript”
อัปเดตคุณสมบัติกำหนดเองของ CSS แบบไดนามิกจาก JavaScript โดยใช้ style.setProperty() คุณปฏิบัติ CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CSS Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การอัปเดตตัวแปรด้วย JavaScript” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CSS Academy นี้ได้ไหม
ได้ บทเรียน CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศและใช้งานคุณสมบัติกำหนดเอง
- ค่าทางเลือกและ var()
- การกำหนดขอบเขตตัวแปรให้คอมโพเนนต์
- การอัปเดตตัวแปรด้วย JavaScript