0Pricing
CSS Academy · บทเรียน

การอัปเดตตัวแปรด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การประกาศและใช้งานคุณสมบัติกำหนดเอง
  2. ค่าทางเลือกและ var()
  3. การกำหนดขอบเขตตัวแปรให้คอมโพเนนต์
  4. การอัปเดตตัวแปรด้วย JavaScript
← กลับไปที่ CSS Academy