فارسی

قدرت CSS media queries و custom properties را برای ایجاد تم‌های خودکار روشن و تاریک که با ترجیحات کاربر تطبیق می‌یابند، کشف کنید. این امر دسترسی و جذابیت بصری را برای مخاطبان جهانی افزایش می‌دهد.

تابع Light-Dark در CSS: انطباق خودکار تم برای وب جهانی

در دنیای متصل امروزی، وب‌سایت‌ها باید برای کاربران با پیشینه‌ها و ترجیحات گوناگون، قابل دسترس و از نظر بصری جذاب باشند. یکی از مؤثرترین راه‌ها برای دستیابی به این هدف، از طریق انطباق خودکار تم، به‌ویژه ارائه تم‌های روشن و تاریک است که بر اساس تنظیمات سیستم کاربر تنظیم می‌شوند. این پست وبلاگ شما را در پیاده‌سازی این قابلیت با استفاده از CSS media queries و خصوصیات سفارشی راهنمایی می‌کند و تجربه‌ای یکپارچه و راحت را برای مخاطبان بین‌المللی شما تضمین می‌کند.

چرا تم‌های خودکار روشن و تاریک را پیاده‌سازی کنیم؟

دلایل قانع‌کننده متعددی برای گنجاندن انطباق خودکار تم در پروژه‌های وب شما وجود دارد:

چگونه انطباق خودکار تم را با CSS پیاده‌سازی کنیم

هسته اصلی انطباق خودکار تم در مدیا کوئری prefers-color-scheme نهفته است. این مدیا کوئری CSS به شما امکان می‌دهد تا طرح رنگی ترجیحی کاربر (روشن یا تاریک) را تشخیص داده و استایل‌های مربوطه را اعمال کنید.

مرحله ۱: تعریف خصوصیات سفارشی (متغیرهای CSS)

با تعریف خصوصیات سفارشی (متغیرهای 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) این متغیرها را با مقادیر تم تاریک بازنویسی می‌کند زمانی که کاربر سیستم خود را روی حالت تاریک تنظیم کرده باشد.

مرحله ۲: اعمال خصوصیات سفارشی به استایل‌های خود

در مرحله بعد، این خصوصیات سفارشی را به استایل‌های 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() برای دسترسی به مقادیر خصوصیات سفارشی خود استفاده می‌کنیم. همچنین یک خاصیت transition به عنصر body اضافه کرده‌ایم تا یک انتقال نرم بین تم‌ها ایجاد کنیم.

مرحله ۳: تست و بهینه‌سازی

پیاده‌سازی خود را به طور کامل در مرورگرها و سیستم‌عامل‌های مختلف آزمایش کنید. مرورگرهای مدرن مانند Chrome، Firefox، Safari و Edge به طور کامل از مدیا کوئری prefers-color-scheme پشتیبانی می‌کنند. می‌توانید بین حالت‌های روشن و تاریک در تنظیمات سیستم‌عامل خود جابجا شوید تا تغییرات را در وب‌سایت خود مشاهده کنید.

تکنیک‌ها و ملاحظات پیشرفته

ارائه یک سوئیچ تم دستی

در حالی که انطباق خودکار تم یک نقطه شروع عالی است، برخی از کاربران ممکن است ترجیح دهند تنظیمات سیستم خود را به صورت دستی لغو کنند. شما می‌توانید یک سوئیچ تم دستی با استفاده از جاوا اسکریپت و حافظه محلی (local storage) ارائه دهید.

HTML:


<button id="theme-toggle">تغییر تم</button>

JavaScript:


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

let currentTheme = localStorage.getItem('theme') || '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 {
  // اگر روی خودکار تنظیم شده باشد، به 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;
}

این قطعه کد یک دکمه اضافه می‌کند که به کاربران اجازه می‌دهد بین تم‌های روشن، تاریک و خودکار جابجا شوند. تم انتخاب شده در حافظه محلی ذخیره می‌شود تا در بارگذاری‌های بعدی صفحه باقی بماند.

کار با تصاویر و SVGها

ممکن است برخی از تصاویر و SVGها در هر دو تم روشن و تاریک خوب به نظر نرسند. می‌توانید از مدیا کوئری‌های CSS برای نمایش شرطی نسخه‌های مختلف این دارایی‌ها استفاده کنید.


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 بیش از حد پیچیده یا انیمیشن‌هایی که می‌توانند رندر را کند کنند، خودداری کنید. همچنین، اطمینان حاصل کنید که خصوصیات سفارشی شما به طور کارآمد تعریف شده‌اند تا سربار جستجوی متغیرها به حداقل برسد.

در اینجا چند روش برتر برای بهینه‌سازی عملکرد آورده شده است:

بهترین شیوه‌ها برای دسترسی‌پذیری

اطمینان حاصل کنید که تم‌های روشن و تاریک شما با دستورالعمل‌های دسترسی‌پذیری، مانند WCAG (دستورالعمل‌های دسترسی به محتوای وب) مطابقت دارند. این شامل ارائه کنتراست رنگ کافی، استفاده از HTML معنایی و اطمینان از اینکه همه عناصر تعاملی با صفحه‌کلید قابل دسترسی هستند، می‌شود.

در اینجا چند روش برتر دسترسی‌پذیری خاص برای دنبال کردن آورده شده است:

نمونه‌هایی در مناطق مختلف

این نمونه‌ها را در نظر بگیرید که چگونه تم‌های روشن و تاریک می‌توانند برای مخاطبان جهانی متنوع طراحی شوند:

نتیجه‌گیری

پیاده‌سازی تم‌های خودکار روشن و تاریک یک گام حیاتی به سوی ایجاد یک تجربه وب در دسترس‌تر و کاربرپسندتر برای مخاطبان جهانی است. با بهره‌گیری از CSS media queries و خصوصیات سفارشی، می‌توانید به راحتی ظاهر وب‌سایت خود را با ترجیحات کاربر تطبیق دهید، خستگی چشم را کاهش دهید و دسترسی‌پذیری را برای کاربران با اختلالات بینایی بهبود بخشید. به یاد داشته باشید که تداعی‌های فرهنگی، دستورالعمل‌های دسترسی‌پذیری و ملاحظات عملکردی را در نظر بگیرید تا تجربه‌ای یکپارچه و فراگیر را برای همه تضمین کنید.

با اتخاذ این تکنیک‌ها، شما تعهد خود را به اصول طراحی وب مدرن نشان می‌دهید و به نیازهای متنوع مخاطبان بین‌المللی خود پاسخ می‌دهید و وب‌سایت خود را به فضایی خوشایند و راحت برای همه تبدیل می‌کنید.