📚 مراجعة سريعة: هذا التطبيق العملي مبني على مفهوم برمجي أساسي. راجع الدرس النظري من هنا أولاً.
بناء مفتاح الوضع الليلي/النهاري مع الحفظ التلقائي
في هذا الدرس العملي، سنقوم بتطبيق ميزة تبديل الوضع الليلي/النهاري خطوة بخطوة، مع ضمان حفظ تفضيل المستخدم في المتصفح حتى بعد تحديث الصفحة.
المتطلبات الأساسية
- معرفة أساسية بـ HTML، CSS، و JavaScript.
- محرر نصوص (مثل VS Code).
- متصفح ويب حديث.
الخطوات
الخطوة 1: إعداد هيكل HTML
سنبدأ بإنشاء ملف HTML بسيط يحتوي على زر لتبديل الوضع.
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>تبديل الوضع الليلي/النهاري</title>
<link rel="stylesheet" href="style.css"> <!-- سنضيف ملف CSS هنا -->
</head>
<body>
<header>
<h1>مرحبًا بك في موقعنا!</h1>
<button id="theme-toggle">تبديل الوضع</button>
</header>
<main>
<p>هذه فقرة نصية لتجربة الوضع الليلي والنهاري. يمكننا رؤية كيف تتغير الألوان والخلفية.</p>
<p>المحتوى هنا سيتأثر بتغيير الوضع.</p>
</main>
<script src="script.js"></script> <!-- سنضيف ملف JavaScript هنا -->
</body>
</html>
الخطوة 2: إضافة أنماط CSS
الآن، سنقوم بإنشاء ملف style.css وتحديد الأنماط الافتراضية والأنماط الخاصة بالوضع الليلي.
/* الأنماط الافتراضية (الوضع النهاري) */
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
color: #333;
margin: 0;
padding: 20px;
transition: background-color 0.3s ease, color 0.3s ease; /* للانتقال السلس */
}
header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
button {
padding: 10px 15px;
border: none;
border-radius: 5px;
cursor: pointer;
background-color: #007bff;
color: white;
font-size: 16px;
}
/* أنماط الوضع الليلي */
body.dark-mode {
background-color: #282c34;
color: #f4f4f4;
}
body.dark-mode button {
background-color: #61dafb;
color: #282c34;
}
الخطوة 3: كتابة كود JavaScript
سنقوم بإنشاء ملف script.js وإضافة الدالة المسؤولة عن تبديل الوضع، بالإضافة إلى منطق حفظ التفضيلات وتحميلها.
// دالة لتبديل الوضع الليلي وحفظ الخيار في المتصفح
function toggleDarkMode() {
const body = document.body;
body.classList.toggle('dark-mode');
// حفظ تفضيل المستخدم في LocalStorage
if (body.classList.contains('dark-mode')) {
localStorage.setItem('theme', 'dark');
console.log('تم تفعيل الوضع الليلي 🌙');
} else {
localStorage.setItem('theme', 'light');
console.log('تم تفعيل الوضع النهاري ☀️');
}
}
// 1. استدعاء الدالة عند النقر على الزر
const themeToggleButton = document.getElementById('theme-toggle');
if (themeToggleButton) {
themeToggleButton.addEventListener('click', toggleDarkMode);
}
// 2. التحقق من التفضيل المحفوظ عند تحميل الصفحة
// هذا الجزء يضمن أن الوضع المفضل للمستخدم يتم تحميله تلقائياً
document.addEventListener('DOMContentLoaded', () => {
if (localStorage.getItem('theme') === 'dark') {
document.body.classList.add('dark-mode');
console.log('تم تحميل الوضع الليلي من التفضيلات المحفوظة 🌙');
} else {
console.log('تم تحميل الوضع النهاري من التفضيلات المحفوظة ☀️');
}
});
الخطوة 4: التجربة
افتح ملف index.html في متصفحك:
- سترى الصفحة بالوضع النهاري افتراضيًا (إذا لم يكن هناك تفضيل محفوظ).
- انقر على زر "تبديل الوضع". يجب أن تتغير الألوان إلى الوضع الليلي.
- أعد تحميل الصفحة. يجب أن تظل الصفحة في الوضع الليلي (بفضل
localStorage). - انقر على الزر مرة أخرى للعودة إلى الوضع النهاري. أعد التحميل، وسترى أنها تظل في الوضع النهاري.
- افتح وحدة تحكم المطور (F12) لمشاهدة رسائل
console.log.
الخلاصة
لقد قمت بنجاح ببناء ميزة تبديل الوضع الليلي/النهاري مع الحفاظ على تفضيلات المستخدم عبر جلسات المتصفح. يمكنك الآن توسيع هذه الميزة لتشمل المزيد من عناصر الصفحة وتخصيص الأنماط لتناسب تصميم موقعك.