ไทย

สำรวจพลังของ CSS media queries และ custom properties เพื่อสร้างธีมสว่างและมืดอัตโนมัติที่ปรับตามความต้องการของผู้ใช้ เพิ่มการเข้าถึงและความสวยงามสำหรับผู้ใช้ทั่วโลก

ฟังก์ชัน Light-Dark ของ CSS: การปรับธีมอัตโนมัติสำหรับเว็บทั่วโลก

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

ทำไมต้องใช้ธีมสว่างและมืดอัตโนมัติ?

มีเหตุผลที่น่าสนใจหลายประการในการนำการปรับธีมอัตโนมัติมาใช้ในโปรเจกต์เว็บของคุณ:

วิธีการใช้การปรับธีมอัตโนมัติด้วย CSS

หัวใจหลักของการปรับธีมอัตโนมัติอยู่ที่ prefers-color-scheme media query ซึ่งเป็น CSS media query ที่ช่วยให้คุณตรวจจับโทนสีที่ผู้ใช้ต้องการ (สว่างหรือมืด) และใช้สไตล์ที่สอดคล้องกันได้

ขั้นตอนที่ 1: กำหนด Custom Properties (ตัวแปร CSS)

เริ่มต้นด้วยการกำหนด custom properties (ตัวแปร CSS) เพื่อเก็บค่าสีสำหรับธีมสว่างและธีมมืดของคุณ ซึ่งจะทำให้ง่ายต่อการสลับระหว่างธีมโดยเพียงแค่ปรับปรุงค่าของตัวแปร


:root {
  --background-color: #ffffff; /* พื้นหลังธีมสว่าง */
  --text-color: #000000; /* ข้อความธีมสว่าง */
  --link-color: #007bff; /* ลิงก์ธีมสว่าง */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #121212; /* พื้นหลังธีมมืด */
    --text-color: #ffffff; /* ข้อความธีมมืด */
    --link-color: #66b3ff; /* ลิงก์ธีมมืด */
    --button-background-color: #333;
    --button-text-color: #fff;
  }
}

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

ขั้นตอนที่ 2: นำ Custom Properties ไปใช้กับสไตล์ของคุณ

ถัดไป นำ custom properties เหล่านี้ไปใช้กับสไตล์ CSS ของคุณเพื่อควบคุมลักษณะที่ปรากฏขององค์ประกอบต่างๆ บนเว็บไซต์ของคุณ


body {
  background-color: var(--background-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s; /* การเปลี่ยนอย่างนุ่มนวล */
}

a {
  color: var(--link-color);
}

button {
  background-color: var(--button-background-color);
  color: var(--button-text-color);
  border: none;
  padding: 10px 20px;
  cursor: pointer;
}

ในที่นี้ เราใช้ฟังก์ชัน var() เพื่อเข้าถึงค่าของ custom properties ของเรา เรายังได้เพิ่ม transition property ให้กับองค์ประกอบ body เพื่อสร้างการเปลี่ยนระหว่างธีมอย่างนุ่มนวล

ขั้นตอนที่ 3: การทดสอบและปรับปรุง

ทดสอบการใช้งานของคุณอย่างละเอียดบนเบราว์เซอร์และระบบปฏิบัติการต่างๆ เบราว์เซอร์สมัยใหม่เช่น Chrome, Firefox, Safari และ Edge รองรับ prefers-color-scheme media query อย่างสมบูรณ์ คุณสามารถสลับระหว่างโหมดสว่างและมืดในการตั้งค่าระบบปฏิบัติการของคุณเพื่อดูการเปลี่ยนแปลงที่สะท้อนบนเว็บไซต์ของคุณ

เทคนิคขั้นสูงและข้อควรพิจารณา

การจัดทำสวิตช์เปลี่ยนธีมด้วยตนเอง

ในขณะที่การปรับธีมอัตโนมัติเป็นจุดเริ่มต้นที่ดี ผู้ใช้บางคนอาจต้องการที่จะลบล้างการตั้งค่าระบบของตนด้วยตนเอง คุณสามารถจัดทำสวิตช์เปลี่ยนธีมด้วยตนเองโดยใช้ JavaScript และ local storage

HTML:



JavaScript:


const themeToggle = document.getElementById('theme-toggle');
const body = document.body;

let currentTheme = localStorage.getItem('theme') || 'auto'; // ค่าเริ่มต้นคือ auto

function setTheme(theme) {
  if (theme === 'dark') {
    body.classList.add('dark-theme');
    body.classList.remove('light-theme');
  } else if (theme === 'light') {
    body.classList.add('light-theme');
    body.classList.remove('dark-theme');
  } else {
    body.classList.remove('light-theme', 'dark-theme');
  }
  localStorage.setItem('theme', theme);
  currentTheme = theme;
}

// ใช้ธีมเริ่มต้นเมื่อโหลดหน้าเว็บ
if (currentTheme === 'dark') {
  setTheme('dark');
} else if (currentTheme === 'light') {
  setTheme('light');
} else {
  //หากตั้งค่าเป็น auto ให้ prefers-color-scheme เป็นตัวตัดสิน
}


themeToggle.addEventListener('click', () => {
    if (currentTheme === 'auto'){
        setTheme('light');
    } else if (currentTheme === 'light') {
        setTheme('dark');
    } else {
        setTheme('auto');
    }
});

CSS: เพิ่ม CSS ต่อไปนี้พร้อมกับ CSS ก่อนหน้า สังเกตการลบล้างด้วยตนเอง:


body.light-theme {
  --background-color: #ffffff; /* พื้นหลังธีมสว่าง */
  --text-color: #000000; /* ข้อความธีมสว่าง */
  --link-color: #007bff; /* ลิงก์ธีมสว่าง */
  --button-background-color: #f0f0f0;
  --button-text-color: #000;
}

body.dark-theme {
  --background-color: #121212; /* พื้นหลังธีมมืด */
  --text-color: #ffffff; /* ข้อความธีมมืด */
  --link-color: #66b3ff; /* ลิงก์ธีมมืด */
  --button-background-color: #333;
  --button-text-color: #fff;
}

โค้ดส่วนนี้จะเพิ่มปุ่มที่ให้ผู้ใช้สามารถสลับระหว่างธีมสว่าง, มืด และอัตโนมัติ ธีมที่เลือกจะถูกเก็บไว้ใน local storage เพื่อให้คงอยู่เมื่อโหลดหน้าเว็บใหม่

การจัดการรูปภาพและ SVG

รูปภาพและ SVG บางอย่างอาจดูไม่ดีในทั้งธีมสว่างและธีมมืด คุณสามารถใช้ CSS media queries เพื่อแสดงเวอร์ชันต่างๆ ของแอสเซทเหล่านี้ตามเงื่อนไข


img.light-mode {
  display: block;
}

img.dark-mode {
  display: none;
}

@media (prefers-color-scheme: dark) {
  img.light-mode {
    display: none;
  }

  img.dark-mode {
    display: block;
  }
}

โค้ดส่วนนี้จะแสดงรูปภาพหนึ่ง (ที่มีคลาส light-mode) ในโหมดสว่าง และรูปภาพอีกรูปหนึ่ง (ที่มีคลาส dark-mode) ในโหมดมืด

ข้อควรพิจารณาเกี่ยวกับชุดสีสำหรับผู้ใช้ทั่วโลก

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

ข้อควรพิจารณาด้านประสิทธิภาพ

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

นี่คือแนวทางปฏิบัติที่ดีที่สุดบางประการเพื่อเพิ่มประสิทธิภาพ:

แนวทางปฏิบัติที่ดีที่สุดด้านการเข้าถึง

ตรวจสอบให้แน่ใจว่าธีมสว่างและธีมมืดของคุณเป็นไปตามแนวทางการเข้าถึง เช่น WCAG (Web Content Accessibility Guidelines) ซึ่งรวมถึงการให้คอนทราสต์ของสีที่เพียงพอ การใช้ HTML เชิงความหมาย และการทำให้แน่ใจว่าองค์ประกอบแบบโต้ตอบทั้งหมดสามารถเข้าถึงได้ด้วยคีย์บอร์ด

นี่คือแนวทางปฏิบัติที่ดีที่สุดด้านการเข้าถึงที่ควรปฏิบัติตาม:

ตัวอย่างในภูมิภาคต่างๆ

พิจารณาตัวอย่างเหล่านี้เกี่ยวกับวิธีที่ธีมสว่างและมืดสามารถปรับให้เข้ากับผู้ใช้ทั่วโลกที่หลากหลาย:

บทสรุป

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

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