Menu
CoddyTech

حفظ اختيار المظهر

جزء من قسم JavaScript قيد التطبيق في رحلة HTML على Coddy. الدرس 17 من 27.

عندما ينتقل المستخدمون بين السمات الفاتحة والداكنة، نريد أن يتذكر الموقع اختيارهم.
لهذا، نستخدم localStorage في JavaScript. فهو يخزّن البيانات في المتصفح، وتظل هذه البيانات محفوظة حتى بعد تحديث الصفحة أو إغلاق المتصفح.

المنطق هو:

  1. عندما يبدّل المستخدم السمة، احفظ السمة الحالية في localStorage.
  2. عند تحميل الصفحة، تحقّق من localStorage وطبّق السمة المحفوظة تلقائيًا.

HTML:

<button id="themeToggle">Toggle Theme</button>

CSS:

body.dark-mode {
  background-color: #222;
  color: #fff;
}

يتحقق هذا الرمز مما إذا كان المستخدم قد حفظ سمة داكنة من قبل في localStorage ويطبقها عند تحميل الصفحة.

عند النقر على الزر، يبدّل الوضع الداكن في الصفحة، ثم يحدّث localStorage كي يتم تذكّر التفضيل في الزيارة التالية

const button = document.getElementById("themeToggle");

// طبّق السمة المحفوظة عند تحميل الصفحة
if (localStorage.getItem("theme") === "dark") {
  document.body.classList.add("dark-mode");
}

button.addEventListener("click", function () {
  document.body.classList.toggle("dark-mode");

  // احفظ التفضيل
  if (document.body.classList.contains("dark-mode")) {
    localStorage.setItem("theme", "dark");
  } else {
    localStorage.setItem("theme", "light");
  }
});

يضمن هذا الحفاظ على تفضيلات المستخدم عند زيارته لموقعك في كل مرة.

challenge icon

التحدي

سهل

أنشئ زرًا للتبديل بين السمات يتذكر تفضيل المستخدم.

الخطوات:

  1. عند تحميل الصفحة: تحقّق مما إذا كان المستخدم قد اختار الوضع الداكن سابقًا
    1. إذا كانت القيمة "dark" محفوظة في localStorage، فأضف الصنف "dark-mode" إلى body
  2. عند النقر على زر التبديل: بدّل بين السمتين الفاتحة والداكنة
    1. بدّل الصنف "dark-mode" على عنصر body
    2. احفظ السمة الحالية في localStorage

جرّب بنفسك

<!DOCTYPE html>
<html>
<head>
  <title>Theme Preference Example</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <button id="themeToggle">Toggle Theme</button>

  <h1>Saving Theme Preference</h1>
  <p>
    Try switching between light and dark mode using the button above.  
    Refresh the page — your choice is remembered thanks to <strong>localStorage</strong>.
  </p>
  <script src="script.js"></script>
</body>
</html>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس JavaScript قيد التطبيق

تدرّب بنفسك: Playground لـ Web