</>
Code With Asmaa
دفتر تعلّم البرمجة — المستوى الأول

مذكرة تعلّم HTML

من أول وسم إلى بناء صفحة كاملة — بأسلوب مبسّط وأمثلة عملية

23 درسأمثلة تفاعليةمشاريع تطبيقيةأسئلة ومفتاح إجابات
الاسم:

الفهرس

رحلتنا داخل لغة HTML خطوة بخطوة — اضغط على أي درس للانتقال إليه مباشرة

قبل البداية
  1. ما هي البرمجة؟الفرق بين HTML و CSS و JavaScript
الأساسيات
  1. 01مقدمة عن HTMLما هي ولماذا نتعلمها
  2. 02هيكل صفحة HTMLDOCTYPE, html, head, body
  3. 03إنشاء أول ملف وتشغيلهدرس عملي خطوة بخطوة
  4. 04وسوم Meta المتقدمةviewport, description, favicon
  5. 05الوسوم والعناصر والخصائصالمفاهيم الأساسية
  6. 06العناوين والفقراتh1-h6, p, br, hr
  7. 07تنسيق النصوصbold, italic, mark...
المحتوى والعناصر
  1. 08الروابط Hyperlinksa, href, target
  2. 09الصورimg, src, alt
  3. 10المسارات Pathsنسبي، مطلق، ../
  4. 11القوائمul, ol, dl
  5. 12الجداولtable, tr, td, colspan
  6. 13الحاويات والعناصر الدلاليةdiv, span, header, main...
  7. 14ربط CSS و JavaScriptstyle, link, script
  8. 15id و classالفرق والاستخدام
تفاعل ومحتوى متقدم
  1. 16النماذج Forms — العناصر والوسومform, input, textarea, select, button, fieldset, datalist
  2. 17أنواع Input وخصائصه الكاملة20 نوع input + كل الخصائص بأمثلة
  3. 18الوسائط المتعددةaudio, video, iframe
  4. 19الرموز الخاصة والتعليقاتentities و comments
  5. 20عناصر النص والكودblockquote, code, kbd...
  6. 21figure و figcaptionصورة مع تعليق توضيحي
احترافية الكود
  1. 22إمكانية الوصول Accessibilityكود يصل لكل الناس
  2. 23أفضل الممارساتكتابة كود نظيف
  3. 24Block و Inline ووسوم HTML5الفرق بينهما وأهم الوسوم الحديثة
التطبيق والتقييم
  1. مشاريع تطبيقية4 مشاريع كاملة
  2. مراجعة شاملة مختصرةملخص كل الدروس في صفحة واحدة
  3. أسئلة الاختيار من متعدد14 سؤال
  4. صواب / خطأ وأكمل الفراغ32 سؤال
  5. أسئلة تطبيقيةاكتب الكود بنفسك
  6. مفتاح الإجاباتللمراجعة الذاتية
  7. 3 مشاريع شاملة محلولةصفحات كاملة جاهزة بكل وسم تعلمته
↩ الفهرس
درس تمهيدي00

ما هي البرمجة؟ والفرق بين HTML و CSS و JavaScript

قبل أن نكتب أي سطر كود، من الضروري أن نفهم الصورة الكاملة: ما الذي نبنيه بالضبط؟ ولماذا يحتاج الموقع الواحد إلى ثلاث لغات مختلفة تعمل معًا؟

أولًا — ما هي البرمجة؟
  • البرمجة ببساطة: هي أن تكتب للحاسوب تعليمات واضحة، فينفّذها بالترتيب تمامًا كما طلبت منه. فكّر في الأمر كوصفة طبخ — كل خطوة مكتوبة بدقة، والحاسوب لا يتجاوز خطوة إلى التي تليها قبل إتمامها.
  • لغة البرمجة ≠ لغة التوصيف: ليس كل ما نكتبه يُعدّ برمجة. لغة البرمجة تستطيع اتخاذ قرارات ("إذا حدث كذا، افعل كذا") وتكرار الأوامر والاستجابة للمستخدم. أما لغة التوصيف، فمهمتها الوحيدة هي وصف المحتوى وتنظيمه — دون أي قرارات أو منطق.
👩‍💻 المبرمج يكتب التعليمات 📄 ملف الكود HTML / CSS / JS 🌐 المتصفح يقرأ ويُترجم الكود 🖥️ الصفحة تظهر للمستخدم رحلة الكود من الكتابة إلى الشاشة
ثانيًا — تشبيه يوضح الفكرة
  • تخيّل أنك تبني مبنى سكني: المهندس المعماري يرسم المخطط ويحدد أين الجدران والغرف والأبواب — هذا دور HTML. ثم يأتي المصمم الداخلي ليختار الألوان والأثاث والإضاءة — هذا دور CSS. وأخيرًا يأتي المقاول الكهربائي ليجعل المصابيح تضيء والمصاعد تتحرك — هذا دور JavaScript.
  • لو غاب المهندس المعماري لن يُقام البناء أصلًا. لو غاب المصمم سيكون المبنى وظيفيًا لكن قبيح المظهر. لو غاب الكهربائي سيكون المبنى ساكنًا لا يستجيب. الثلاثة ضروريون معًا.
HTML — هيكل المبنى الجدران • الغرف • الأبواب • النوافذ CSS — التصميم الداخلي الألوان • الخطوط • المسافات JavaScript — الحركة الإضاءة • المصاعد • التفاعل

المبنى الكامل = HTML (الهيكل) + CSS (المظهر) + JavaScript (الحركة والتفاعل)

ثالثًا — كل لغة في بطاقة
MARKUP LANGUAGE
HTML
HyperText Markup Language
📋
الدور: تحديد بنية الصفحة ومحتواها
🎯
يُجيب عن: ماذا يوجد في الصفحة؟
📁
الملف: index.html
"ضع هنا عنوانًا، وتحته فقرة، ثم صورة"
STYLE LANGUAGE
CSS
Cascading Style Sheets
🎨
الدور: التحكم في المظهر والتنسيق
🎯
يُجيب عن: كيف يبدو كل عنصر؟
📁
الملف: style.css
"اجعل العنوان أحمر، حجمه 32px، وبخط سميك"
PROGRAMMING LANGUAGE
JavaScript
لغة البرمجة الفعلية للويب
الدور: إضافة الحركة والسلوك التفاعلي
🎯
يُجيب عن: ماذا يحدث عند تفاعل المستخدم؟
📁
الملف: script.js
"عند الضغط على الزر، أرسل البيانات وأظهر رسالة نجاح"
رابعًا — مثال عملي: بطاقة تعريف شخصية
  • سنبني بطاقة تعريف شخصية بسيطة باستخدام الثلاث لغات، لنرى بوضوح كيف تُسهم كل واحدة في النتيجة النهائية.
الخطوة ١ — HTML فقط
الهيكل موجود، لكن بلا تنسيق
profile.html
<div>
  <img src="photo.jpg">
  <h2>أسماء محمد</h2>
  <p>مطورة ويب أولى</p>
  <button>تواصل معي</button>
</div>
النتيجة — HTML فقط
👤
أسماء محمد
مطورة ويب أولى
← عناصر موجودة لكن بلا تنسيق
الخطوة ٢ — نُضيف CSS
المظهر يتحوّل تمامًا
style.css
div {
  background: #fff;
  border-radius: 16px;
  padding: 24px;
  text-align: center;
  box-shadow: 0 8px 24px #0002;
}
button {
  background: #C1572F;
  color: white;
  border: none;
  padding: 10px 28px;
  border-radius: 30px;
}
النتيجة — HTML + CSS
👤
أسماء محمد
مطورة ويب أولى
← شكل احترافي بفضل CSS
الخطوة ٣ — نُضيف JavaScript
البطاقة تصبح تفاعلية
script.js
document.querySelector('button')
  .addEventListener('click', function() {
    alert('سيتم التواصل معك قريبًا!');
  });

// أو: تغيير نص الزر مباشرة
document.querySelector('button')
  .textContent = '✔ تم الإرسال';
النتيجة — قبل وبعد الضغط
قبل الضغط 👤 أسماء محمد مطورة ويب أولى تواصل معي ضغط الزر بعد الضغط 👤 أسماء محمد مطورة ويب أولى ✔ تم الإرسال 💬 سيتم التواصل معك قريبًا!
JavaScript تُغيّر البطاقة بعد تفاعل المستخدم
خامسًا — مقارنة بسيطة بين الثلاثة
HTML CSS JavaScript
🏗️ 🎨
بيبني الصفحة بيجمّل الصفحة بيحرّك الصفحة
بيقول للمتصفح:
"ضع هنا عنوان وصورة"
بيقول للمتصفح:
"خلّي العنوان أحمر وكبير"
بيقول للمتصفح:
"لما يضغط الزر، أظهر رسالة"
🎯
خلاصة المسار: تعلّم HTML أولًا لأنها الأساس الذي لا يقوم بناء الويب بدونه. بعدها تُصبح CSS وJavaScript منطقيتين تمامًا ويسهل استيعابهما.
📌 ملخص الدرس
  • البرمجة = تعليمات دقيقة للحاسوب يُنفّذها بالترتيب
  • HTML لغة توصيف — تحدد ماذا يوجد في الصفحة
  • CSS لغة تنسيق — تحدد كيف يبدو كل عنصر
  • JavaScript لغة برمجة حقيقية — تحدد ماذا يحدث عند التفاعل
  • الترتيب الصحيح للتعلّم: HTML ← CSS ← JavaScript
↩ الفهرس
1
الدرس 0101

مقدمة عن HTML

في هذا الدرس هنفهم معنى HTML بأبسط شكل ممكن، ودورها الحقيقي في أي موقع تشوفه على الإنترنت.

  • تخيّل المشهد: لو كنت بتكتب خطاب لشخص وعايز توضح له "هذا عنوان"، "هذه فقرة"، "هذه صورة"... HTML بتعمل بالضبط الفكرة دي، لكن مع المتصفح بدل الشخص. هي طريقة "نتكلم" بها مع المتصفح ونقوله: هذا الجزء عنوان، وهذا نص عادي، وهنا ضع صورة.
  • HTML ليست لغة برمجة: لا تحتوي على شروط مثل "لو" (if) أو حلقات تكرار، ومهمتها الوحيدة هي وصف شكل ومحتوى الصفحة. لهذا تُسمّى "لغة توصيف" (Markup Language) لا "لغة برمجة".
  • ثلاثي الويب: أي موقع حقيقي يتكوّن من ثلاثة أجزاء تعمل معًا: HTML هو الهيكل (مثل عظمة المبنى وتقسيم غرفه)، CSS هو الديكور (الألوان والخطوط والمسافات)، و JavaScript هو الحركة والتفاعل (مثل زر يستجيب عند الضغط عليه). في هذه المذكرة نتعلّم الهيكل أولًا، لأنه الأساس الذي تُبنى عليه الخطوتان التاليتان.
  • الوسوم (Tags): لكتابة HTML نستخدم كلمات محاطة بعلامتي أكبر من وأصغر من، مثل <p> ومعناها "ابدأ فقرة". المتصفح (مثل Chrome) هو الذي يقرأ هذه الوسوم ويحوّلها إلى الشكل المرئي الذي تراه على الشاشة.
  • لماذا نبدأ بـ HTML؟ لأنها أبسط لغة في عالم الويب وأهم نقطة انطلاق؛ بدونها لا يوجد محتوى أصلًا لتُنسّقه CSS أو تتفاعل معه JavaScript.
💡
نصيحة: لا تحاول حفظ كل الوسوم الآن. ركّز على فهم الفكرة، وكل درس قادم هيقدّم لك وسوم جديدة بأمثلة عملية بسيطة.
📌 ملخص الدرس
  • HTML لغة توصيف لا لغة برمجة
  • HTML هي الهيكل، CSS الديكور، JavaScript الحركة
  • الوسوم Tags هي اللغة التي بها نتحدث مع المتصفح
↩ الفهرس
2
الدرس 0202

هيكل صفحة HTML الأساسي

كل صفحة HTML — بسيطة أو معقّدة — تبدأ من نفس الهيكل الأساسي الثابت. لنحفظه جيدًا.

index.html
<!-- 1. تعريف نوع المستند -->
<!DOCTYPE html>
<html lang="ar" dir="rtl">

<!-- 2. الرأس: معلومات غير ظاهرة -->
  <head>
    <meta charset="UTF-8">
    <title>عنوان الصفحة</title>
  </head>

<!-- 3. الجسم: المحتوى الظاهر -->
  <body>
    <h1>مرحبًا بالعالم</h1>
  </body>

</html>
  • <!DOCTYPE html> سطر ثابت يكتب مرة واحدة في أول الملف، وهو يخبر المتصفح أن هذا مستند HTML5 حديث، فيقرأه بالطريقة الصحيحة.
  • <html> هو "الصندوق الكبير" الذي يحتضن كل أجزاء الصفحة بدون استثناء.
  • خاصية lang داخل <html> تحدد لغة المحتوى (مثل ar للعربية).
  • خاصية dir داخل <html> تحدد اتجاه الكتابة: rtl للعربية، ltr للإنجليزية.
  • <head> يحتوي معلومات لا تظهر للزائر مباشرة على الصفحة.
  • <title> داخل head يحدد عنوان التبويب الظاهر في المتصفح.
  • <meta charset="UTF-8"> داخل head يحدد ترميز الحروف ليظهر النص العربي بشكل صحيح.
  • <body> هو المكان الوحيد الذي يظهر فعليًا للزائر؛ كل نص أو صورة أو زر تريد إظهاره يُكتب بداخله.
  • ملحوظة مهمة: المسافات والفراغات بين الأسطر (التي تراها في الكود مرتّبة) لا تغيّر شكل الصفحة في المتصفح، لكنها تجعل الكود أسهل بكثير في القراءة لك ولغيرك مستقبلًا.
⚠️
نسيان <meta charset="UTF-8"> قد يجعل الحروف العربية تظهر بشكل مشوّه (رموز غريبة) في المتصفح.
📌 ملخص الدرس
  • DOCTYPE يحدد إصدار HTML المستخدم
  • html هو الصندوق الكبير لكل الصفحة
  • head لمعلومات لا تظهر، body للمحتوى الظاهر
⚠️ أخطاء شائعة
  • نسيان إغلاق وسم <html> أو <body> في النهاية.
  • وضع عناصر ظاهرة مثل <h1> أو <p> داخل <head> بدل <body>.
  • نسيان <!DOCTYPE html> في أول سطر، مما يجعل المتصفح يعرض الصفحة بطريقة غير متوقعة.
↩ الفهرس
3
الدرس 0303

درس عملي: إنشاء أول ملف وتشغيله

كفاية قراءة! خلينا نطبّق فعليًا على جهازك خطوة بخطوة، ونشوف أول صفحة HTML بأعيننا في المتصفح.

1
افتح برنامج تحرير الكود: الأشهر والمجاني هو Visual Studio Code، تقدر تنزّله من موقعه الرسمي مباشرة، وهو الأداة التي يستخدمها أغلب المبرمجين لكتابة الكود.
2
أنشئ مجلدًا جديدًا في أي مكان على جهازك (مثلًا على سطح المكتب) باسم بسيط مثل my-website، ثم افتحه من داخل البرنامج عبر File > Open Folder.
3
أنشئ ملفًا جديدًا داخل هذا المجلد، واكتب اسمه بدقة: index.html — بحروف صغيرة، وبدون أي مسافات.
4
اكتب هيكل الصفحة الذي تعلمناه في الدرس السابق بداخل الملف، ثم احفظ بالضغط على Ctrl + S.
5
شغّل الصفحة: اضغط مرتين بالماوس على الملف ليفتح تلقائيًا في المتصفح، أو بزر الماوس الأيمن داخل VS Code واختر "Open with Live Server" لتحديث الصفحة تلقائيًا مع كل تعديل تحفظه.
💡
اسم الملف وامتداده: في index.html، كلمة index هي الاسم الذي اختاره أنت، أما .html فهو "الامتداد" الذي يخبر النظام والمتصفح أن هذا ملف HTML — لا تحذفه ولا تغيّره أبدًا.
⚠️
ملف اسمه index.html له معنى خاص جدًا: المتصفحات وخوادم الاستضافة تتعامل معه تلقائيًا كـ "الصفحة الرئيسية" للموقع عند فتح المجلد مباشرة بدون كتابة اسم ملف.
📌 ملخص الدرس
  • نحفظ الملف بامتداد .html
  • نفتحه بالضغط مرتين أو بـ Live Server
  • أي تعديل نحفظه يحتاج تحديث الصفحة لرؤيته
↩ الفهرس
4
الدرس 0404

وسوم Meta المتقدمة

تعرفنا على charset و title بسرعة في الدرس الثاني، خلّينا نوسّع الصورة على باقي محتويات <head> المهمة.

head-tags.html
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="وصف قصير لمحتوى الصفحة">
  <link rel="icon" href="favicon.ico">
  <title>متجر الكتب الإلكتروني</title>
</head>
  • viewport يضبط طريقة عرض صفحتك على الشاشات الصغيرة (الموبايل)؛ بدونه قد تظهر الصفحة مصغّرة جدًا وصعبة القراءة على الهاتف.
  • description وصف قصير (حوالي 150 حرفًا) يظهر أسفل عنوان موقعك في نتائج بحث جوجل، ويساعد الزائر على تقرير الدخول لموقعك أو لا.
  • favicon هي الأيقونة الصغيرة التي تظهر في تبويب المتصفح بجانب عنوان الصفحة، ونربطها بوسم <link rel="icon" href="...">.
  • <title> ليس فقط اسم الصفحة الظاهر في التبويب، بل أيضًا أول نص قابل للضغط يظهر كعنوان في نتائج البحث — لذلك اختر عنوانًا واضحًا ومعبّرًا عن محتوى الصفحة.
💡
كل هذه الوسوم لا تظهر بصريًا داخل الصفحة نفسها، لكنها تؤثر بشكل كبير على تجربة الزائر وظهور موقعك في محركات البحث.
📌 ملخص الدرس
  • viewport يضبط العرض على الموبايل
  • description يظهر في نتائج البحث
  • title هو عنوان التبويب والصفحة في نتائج البحث
⚠️ أخطاء شائعة
  • نسيان علامات التنصيص حول قيمة content في وسم meta.
  • نسيان وسم viewport، فتظهر الصفحة مصغّرة جدًا على الهاتف.
  • وضع وسوم meta داخل body بدل head.
↩ الفهرس
5
الدرس 0505

الوسوم، العناصر، والخصائص

ثلاثة مصطلحات ستتكرر معك في كل درس قادم — لنفهمها بدقة وبأمثلة بسيطة من الآن.

الصيغة العامة لعنصر HTML <tag attribute="value"> المحتوى </tag>
<html> <head> meta charset, title, link CSS — لا تظهر للزائر <body> h1, p, img... كل المحتوى الظاهر على الصفحة
هيكل صفحة HTML: html يضم head (غير ظاهر) وbody (ظاهر للزائر)
example.html
<a href="https://example.com" target="_blank">زورونا</a>
المعاينة
  • الوسم (Tag): الكلمة المحاطة بـ < >، مثل <a>. غالبًا يأتي في زوج: وسم فاتح <a> ووسم غالق </a> يوضع قبله شرطة مائلة.
  • العنصر (Element): هو الوسم الفاتح + المحتوى الذي بينهما + الوسم الغالق، مجتمعين معًا كوحدة واحدة.
  • الخاصية (Attribute): فكّر فيها كتفصيل إضافي عن الوسم، مثل لون كرسي أو خامته. تُكتب داخل الوسم الفاتح فقط بصيغة name="value"، مثل href و target في المثال أعلاه. يمكن لوسم واحد أن يحمل أكثر من خاصية، يفصل بينها مسافة فقط.
  • بعض العناصر فردية (Void Elements) ولا تحتاج وسم غالق أصلًا لأنها لا تحتوي على محتوى بينها، مثل <br> و <img> و <hr>.
📌 ملخص الدرس
  • الوسم Tag هو الكلمة بين < >
  • العنصر Element هو الوسم بمحتواه كاملًا
  • الخاصية Attribute معلومة إضافية داخل الوسم الافتتاحي
⚠️ أخطاء شائعة
  • نسيان علامات التنصيص حول قيمة الخاصية: alt=وصف بدل alt="وصف".
  • الخلط بين اسم الوسم واسم الخاصية عند الكتابة.
  • نسيان غلق الوسوم التي تحتاج إغلاقًا مثل </p>.
↩ الفهرس
6
الدرس 0606

العناوين والفقرات

أول لبنات بناء أي محتوى نصي: العناوين بمستوياتها الستة، والفقرات، والفواصل.

headings.html
<h1>عنوان رئيسي</h1>
<h2>عنوان فرعي</h2>
<p>هذه فقرة عادية من النص.</p>
<hr>
<p>سطر أول<br>سطر ثانٍ</p>
المعاينة
عنوان رئيسي
عنوان فرعي
هذه فقرة عادية من النص.

سطر أول
سطر ثانٍ
  • تتدرج العناوين من <h1> (الأهم والأكبر) إلى <h6> (الأصغر) — تمامًا مثل عنوان مقال في جريدة (h1) وعناوينه الفرعية بداخله (h2، h3...). يُفضّل استخدام <h1> واحد فقط في كل صفحة.
  • <p> تُستخدم لتجميع جملة أو أكثر في فقرة واحدة، ويضع المتصفح تلقائيًا مسافة فاصلة قبل وبعد كل فقرة.
  • <br> ينقلك لسطر جديد بدون إنشاء فقرة جديدة، أي بدون أي مسافة فاصلة إضافية — يُستخدم مثلًا في كتابة عنوان بريدي على عدة أسطر.
  • <hr> يرسم خطًا أفقيًا فاصلًا، يُستخدم بصريًا للفصل بين قسمين مختلفين من المحتوى.
📌 ملخص الدرس
  • h1 إلى h6 للعناوين بترتيب الأهمية
  • p للفقرات
  • br لسطر جديد بدون فقرة، hr لخط فاصل
↩ الفهرس
7
الدرس 0707

تنسيق النصوص

وسوم صغيرة تتحكم في شكل النص ودلالته داخل الفقرة الواحدة.

format.html
<strong>نص هام</strong>
<em>نص مؤكَّد</em>
<mark>نص مميَّز</mark>
<u>نص تحته خط</u>
ماء H<sub>2</sub>O
المعاينة
نص هام
نص مؤكَّد
نص مميَّز
نص تحته خط
ماء H2O
  • <strong> يعرض النص غامقًا، ويخبر المتصفح وقارئ الشاشة أن هذا المحتوى مهم فعلاً (دلالة معنوية).
  • <b> يعرض النص غامقًا أيضًا، لكنه تنسيق بصري فقط بدون أي معنى إضافي.
  • <em> يحمل دلالة "تأكيد على الكلمة" بخط مائل، ويفيد محركات البحث وقارئات الشاشة.
  • <i> يعرض النص بخط مائل بصري فقط، بدون أي دلالة معنوية.
  • <mark> يميّز النص بخلفية صفراء كقلم فسفوري.
  • <small> يصغّر حجم النص.
  • <del> يضع خطًا فوق نص محذوف.
  • <ins> يسطّر نصًا مُضافًا حديثًا.
  • <sub> يكتب النص أسفل السطر (مثل الرقم 2 في H2O).
  • <sup> يكتب النص أعلى السطر (مثل الأس في المعادلات الرياضية).
📌 ملخص الدرس
  • strong وem لهما دلالة مهمة، b وi شكل فقط
  • mark لتمييز النص، small لتصغيره
  • sub وsup للأرقام السفلية والعلوية
↩ الفهرس
8
الدرس 0808

الروابط Hyperlinks

الرابط هو ما يجعل الويب "ويبًا" — القدرة على الانتقال من صفحة لأخرى بضغطة واحدة.

links.html
<a href="https://example.com">رابط خارجي</a>
<a href="#lesson-1">انتقل للدرس الأول</a>
<a href="mailto:info@site.com">راسلنا</a
المعاينة
رابط خارجيانتقل للدرس الأولراسلنا
  • خاصية href (Hypertext Reference) تحدد وجهة الرابط: عنوان صفحة، أو بريد إلكتروني بصيغة mailto:، أو رقم هاتف بصيغة tel:.
  • target="_blank" يفتح الرابط في تبويب جديد مع بقاء صفحتك مفتوحة.
  • target="_self" هو الافتراضي، ويفتح الرابط في نفس التبويب الحالي.
  • الرابط الذي يبدأ بعلامة # ينقّلك إلى عنصر آخر بنفس id داخل الصفحة الحالية نفسها، بدون الانتقال لصفحة جديدة.
  • الروابط المطلقة تكتب العنوان كاملًا وتبدأ بـ https://، وهي مفيدة للروابط الخارجية.
  • الروابط النسبية تكتب فقط اسم الملف مثل about.html لأنه موجود بجانب صفحتك في نفس الموقع. الدرس القادم يشرح المسارات بالتفصيل.
📌 ملخص الدرس
  • href يحدد وجهة الرابط
  • target="_blank" يفتح تبويبًا جديدًا
  • # تنقّلك لعنصر بنفس id داخل الصفحة
⚠️ أخطاء شائعة
  • كتابة الرابط الخارجي بدون https:// فيتحوّل لرابط نسبي خاطئ.
  • الخلط بين target="_blank" وtarget="_self".
  • نسيان علامة # عند الربط بعنصر داخل نفس الصفحة.
🛠️ مشروع مصغّر: صفحة روابط شخصية
  • بطاقة فيها اسمك وصورة بسيطة
  • قائمة روابط لحساباتك (لينكدإن، جيت هاب، بريد) كل رابط بخاصية target مناسبة
  • رابط واحد على الأقل بصيغة mailto
ahreftargetmailto
↩ الفهرس
9
الدرس 0909

الصور

وسم بسيط لكنه يحمل خاصية مهمة جدًا غالبًا ما يتم تجاهلها: alt.

image.html
<img
  src="images/cat.jpg"
  alt="قطة صغيرة بيضاء"
  width="200"
>
المعاينة
🖼️
alt: "قطة صغيرة بيضاء"
  • src (Source) يحدد مصدر ملف الصورة — قد يكون مسارًا داخل جهازك مثل images/cat.jpg، أو رابطًا من الإنترنت.
  • alt نص بديل وصفي يظهر إذا فشلت الصورة في التحميل لأي سبب، وتعتمد عليه قارئات الشاشة لوصف الصورة لذوي الإعاقة البصرية، وله دور أيضًا في ظهور صفحتك بشكل أفضل في نتائج البحث على جوجل.
  • خاصية width تحدد عرض الصورة بالبكسل.
  • خاصية height تحدد ارتفاع الصورة بالبكسل؛ من الأفضل تحديد width وheight معًا دائمًا حتى لا "تتحرك" عناصر الصفحة أثناء انتظار تحميل الصورة.
  • صيغة jpg مناسبة للصور الفوتوغرافية العادية.
  • صيغة png مناسبة للصور التي تحتاج خلفية شفافة.
  • صيغة svg مناسبة للرسومات والأيقونات.
  • صيغة webp صيغة حديثة بحجم أصغر وجودة قريبة من الصيغ السابقة.
⚠️
صورة بدون alt تُعتبر من أبرز أخطاء إمكانية الوصول (Accessibility) في تصميم المواقع — سنخصص لها درسًا كاملًا قريبًا.
📌 ملخص الدرس
  • img وsrc لعرض الصورة
  • alt نص بديل ضروري لكل صورة
  • width وheight لتثبيت الأبعاد
⚠️ أخطاء شائعة
  • نسيان خاصية alt تمامًا.
  • خطأ في كتابة src (حالة الأحرف الكبيرة/الصغيرة أو فراغ في اسم الملف).
  • عدم تحديد width وheight فتتحرك عناصر الصفحة أثناء تحميل الصورة.
🛠️ مشروع مصغّر: معرض صور بسيط
  • عرض 4 صور بجانب بعضها بخاصية alt مناسبة لكل صورة
  • تحديد width وheight ثابتين لكل صورة
  • إضافة تعليق نصي قصير أسفل كل صورة
imgaltwidth/height
↩ الفهرس
10
الدرس 1010

المسارات Paths

من أكثر الأشياء التي تسبب ارتباكًا للمبتدئين: إزاي أوصل لملف صورة أو صفحة تانية بشكل صحيح؟ هذا الدرس يحل المشكلة نهائيًا.

شجرة المجلدات
my-website/
├── index.html
├── about.html
├── images/
│   └── photo.jpg
└── pages/
    └── contact.html
  • نفس المجلد: لو كانت photo.jpg بجانب index.html مباشرة، نكتب المسار بدون أي تعقيد: src="photo.jpg".
  • داخل مجلد فرعي: بما أن الصورة في مثالنا داخل مجلد images، نكتب من index.html: src="images/photo.jpg".
  • الرجوع للخلف بـ ../: لو كنا داخل pages/contact.html وعايزين نصل لصورة في مجلد images الموجود بجانب المجلد الأصلي، نكتب: src="../images/photo.jpg" — كل ../ تعني "اخرج من هذا المجلد درجة واحدة للخلف" قبل أن تكمل المسار.
  • المسار المطلق: يكتب العنوان كاملًا بدءًا من الإنترنت مثل https://example.com/images/photo.jpg، ويُستخدم فقط للملفات الموجودة على موقع آخر خارجي.
⚠️
أكثر خطأ شائع: الخلط بين الحروف الكبيرة والصغيرة في اسم الملف — Photo.jpg تُعتبر ملفًا مختلفًا تمامًا عن photo.jpg على كثير من الأنظمة، فاحرص على كتابة الاسم بدقة كما هو محفوظ.
📌 ملخص الدرس
  • المسار المطلق يبدأ بـ https:// لرابط خارجي كامل
  • المسار النسبي اسم ملف أو مجلد بجانب صفحتك
  • ../ للرجوع مجلدًا للخلف
↩ الفهرس
11
الدرس 1111

القوائم

ثلاثة أنواع من القوائم لتنظيم المعلومات بشكل واضح ومرتب.

lists.html
<ul>
  <li>تفاح</li>
  <li>موز</li>
</ul>

<ol>
  <li>افتح المحرر</li>
  <li>اكتب الكود</li>
</ol>
المعاينة
  • تفاح
  • موز
  1. افتح المحرر
  2. اكتب الكود
  • <ul> (Unordered List) قائمة بنقاط بدون ترتيب رقمي — استخدمها عندما لا يكون ترتيب العناصر مهمًا، مثل قائمة مشتريات.
  • <ol> (Ordered List) قائمة مرتبة بأرقام تلقائية — استخدمها عندما يكون الترتيب مهمًا، مثل خطوات تنفيذ وصفة طعام. يمكن تغيير نقطة البداية بخاصية start.
  • كل عنصر داخل القائمتين السابقتين، مهما كان نوعها، يُكتب داخل <li> (List Item).
  • <dl> قائمة تعريفية مختلفة تمامًا عن ul وol، ومثالية لكتابة قاموس مصطلحات.
  • <dt> يكتب المصطلح نفسه داخل القائمة التعريفية.
  • <dd> يكتب تعريف المصطلح أسفل dt مباشرة.
  • يمكن وضع قائمة كاملة بداخل عنصر <li> من قائمة أخرى لإنشاء قوائم متداخلة (Nested Lists)، مثل قائمة فرعية تتبع لعنصر رئيسي.
📌 ملخص الدرس
  • ul قائمة غير مرقّمة، ol قائمة مرقّمة
  • li لكل عنصر داخل القائمة
  • dl/dt/dd لقائمة تعريفات
↩ الفهرس
12
الدرس 1212

الجداول

لعرض بيانات منظمة في صفوف وأعمدة — من جدول درجات إلى جدول مقارنة أسعار.

table.html
<table>
  <tr>
    <th>الاسم</th>
    <th>العمر</th>
  </tr>
  <tr>
    <td>سارة</td>
    <td>21</td>
  </tr>
</table>
المعاينة
الاسمالعمر
سارة21
  • <table> الحاوية الرئيسية للجدول كله.
  • <tr> يمثل صفًا كاملًا في الجدول (Table Row).
  • <th> خلية عنوان تظهر غامقة افتراضيًا.
  • <td> خلية بيانات عادية.
  • <thead> يحدد رأس الجدول، وهذا يسهّل التنسيق بـ CSS لاحقًا.
  • <tbody> يحدد المحتوى الأساسي للجدول.
  • <tfoot> يحدد تذييل الجدول.
  • colspan يدمج عدة أعمدة متجاورة في خلية واحدة (مثل عنوان يمتد عبر الجدول).
  • rowspan يدمج عدة صفوف متتالية في خلية واحدة.
  • <caption> يضيف عنوانًا وصفيًا يظهر فوق الجدول بالكامل.
  • تذكّر: الجدول يُستخدم لعرض بيانات حقيقية في صفوف وأعمدة فقط (كشيت درجات، جدول مقارنة)، وليس لترتيب شكل الصفحة بشكل عام — هذه مهمة CSS.
📌 ملخص الدرس
  • table/tr/th/td لبناء الجدول
  • thead وtbody لتقسيم منطقي للجدول
  • colspan/rowspan لدمج الخلايا، caption للعنوان
⚠️ أخطاء شائعة
  • استخدام <td> في صف الرأس بدل <th>.
  • نسيان فتح صف <tr> جديد لكل سطر بيانات.
  • الخلط بين colspan (دمج أعمدة) وrowspan (دمج صفوف).
🛠️ مشروع مصغّر: جدول درجات
  • أعمدة: اسم المادة - الدرجة - التقييم لأربع مواد
  • استخدام thead للرأس وtbody للمحتوى
  • صف أخير بخلية مدمجة بـ colspan لعرض "الإجمالي"
tablethead/tbodycolspan
↩ الفهرس
13
الدرس 1313

الحاويات والعناصر الدلالية

كيف نقسّم صفحة كاملة إلى مناطق منظمة وواضحة المعنى لمحركات البحث وذوي الإعاقة؟

<header>
<nav>
<main> / <section> / <article>
<aside>
  • <div> فكّر فيه كصندوق كرتون عادي بدون أي لافتة عليه — حاوية عامة على مستوى الكتلة (Block) تُستخدم للتجميع والتنسيق، لكنها لا تخبر أحدًا بمحتواها.
  • <span> نفس فكرة div تقريبًا، لكنه على مستوى السطر (Inline) — يُستخدم لتنسيق كلمة أو جزء صغير وسط الجملة دون قطع تسلسلها.
  • جاءت HTML5 بعناصر دلالية (Semantic) هي نفس فكرة "الصندوق" لكن مكتوب عليها لافتة بمعناها: <header> الترويسة، <nav> قائمة التنقل، <main> المحتوى الأساسي، <section> قسم منطقي، <article> محتوى مستقل بذاته كمقال، <aside> محتوى جانبي، <footer> التذييل.
  • الفرق العملي: استخدام الوسوم الدلالية بدل الإفراط في div يجعل محركات البحث تفهم بنية صفحتك بشكل أفضل، ويسهّل على مستخدمي قارئات الشاشة التنقل بسرعة بين أقسام الصفحة.
📌 ملخص الدرس
  • div حاوية عامة بدون معنى، span لنص داخل السطر
  • header/main/footer/nav/section/article وسوم دلالية واضحة المعنى
  • الوسوم الدلالية تساعد محركات البحث وقارئات الشاشة
↩ الفهرس
14
الدرس 1414

ربط CSS و JavaScript بالصفحة

HTML تبني الهيكل، لكنها تحتاج لرفيقين لتكتمل: CSS للمظهر، JavaScript للتفاعل.

  • ثلاث طرق لإضافة CSS:
three-ways.html
<!-- 1. مباشر داخل الوسم -->
<p style="color:red">نص</p>

<!-- 2. داخلي في رأس الصفحة -->
<style> p { color: red; } </style>

<!-- 3. خارجي (الأفضل والأشهر) -->
<link rel="stylesheet" href="style.css">

<!-- إضافة JavaScript قبل إغلاق body -->
<script src="app.js"></script>
  • الطريقة الخارجية (External) هي الأفضل والأكثر استخدامًا في المشاريع الحقيقية لأنها تفصل التصميم عن المحتوى، وتسهّل الصيانة، وتجعل ملف CSS واحد قابلًا للاستخدام في عدة صفحات.
  • الطريقة الداخلية والمباشرة (Inline) مفيدتان فقط للتجربة السريعة أو حالات استثنائية، لكنهما تجعلان الصيانة أصعب كلما كبر المشروع.
  • وسم <script> غالبًا يوضع قبل إغلاق </body> ليُحمَّل بعد ظهور محتوى الصفحة، فلا يبطئ التحميل الأولي.
📌 ملخص الدرس
  • style لكتابة CSS داخليًا في head
  • link لربط ملف CSS خارجي
  • script لربط أو كتابة JavaScript
⚠️ أخطاء شائعة
  • وضع وسم <script> في بداية الصفحة فيبطّئ ظهور المحتوى.
  • نسيان خاصية rel="stylesheet" عند ربط ملف CSS.
  • كتابة مسار الملف الخارجي بشكل خاطئ فلا يُحمَّل التنسيق أو الكود.
↩ الفهرس
15
الدرس 1515

id و class

خاصيتان تستخدمهما في كل صفحة تقريبًا، خصوصًا عند العمل مع CSS و JavaScript.

id-class.html
<h1 id="main-title">عنوان فريد</h1>

<p class="highlight">فقرة مميزة 1</p>
<p class="highlight">فقرة مميزة 2</p>

<div id="box1" class="card active">...</div>
  • id معرّف فريد يُستخدم مرة واحدة فقط في الصفحة كلها لعنصر واحد بالتحديد، يفيد للانتقال السريع له بالرابط #id، أو لاستهدافه بدقة في CSS أو JavaScript.
  • class اسم تصنيف يمكن تكراره على أي عدد من العناصر، ويُستخدم لتنسيق مجموعة عناصر بنفس الشكل دفعة واحدة عبر CSS.
  • القاعدة البسيطة: استخدم id للعنصر الفريد الوحيد من نوعه في الصفحة (مثل الهيدر الرئيسي)، واستخدم class لأي تصميم مشترك بين عدة عناصر.
  • العنصر نفسه يمكن أن يحمل id واحد و أكثر من class في نفس الوقت، يفصل بين الأصناف مسافة: class="card active".
  • تذكّر استخدام label for مع id الحقل كما تعلمنا في درس النماذج — هذا أحد أهم تطبيقات id العملية.
📌 ملخص الدرس
  • id معرّف فريد لعنصر واحد فقط في الصفحة كلها
  • class تصميم مشترك يُستخدم على أكثر من عنصر
  • كلاهما يُستهدف من CSS وJavaScript
⚠️ أخطاء شائعة
  • استخدام نفس id لأكثر من عنصر في الصفحة (id يجب أن يكون فريدًا دومًا).
  • كتابة قيمة class بفاصلة بدل مسافة عادية عند تعدد الأصناف.
  • الخلط بين متى تستخدم id ومتى تستخدم class.
↩ الفهرس
16
الدرس 1616

النماذج Forms — العناصر والوسوم

النماذج هي قلب التفاعل في الويب — من خلالها يكتب المستخدم بياناته ويرسلها. في هذا الدرس نتعلم كل عناصر النموذج بالتفصيل مع مثال لكل واحدة.

① وسم <form> وخصائصه

الحاوية الرئيسية التي تغلّف كل حقول الإدخال. بدونها لا يُرسل أي بيانات.

form-attrs.html
<!-- action: وجهة إرسال البيانات للسيرفر -->
<!-- method: get (بيانات في الرابط) أو post (مخفية وأأمن) -->
<!-- autocomplete: on/off لتفعيل/تعطيل الإكمال التلقائي -->
<!-- target: _self أو _blank لتحديد أين يُفتح الرد -->
<!-- novalidate: تعطيل التحقق التلقائي من صحة البيانات -->
<!-- enctype: للفورمات اللي بترفع ملفات -->

<form
  action="https://example.com/register"
  method="post"
  autocomplete="on"
  target="_self"
  enctype="multipart/form-data"
>
  <!-- الحقول هنا -->
</form>
  • action — يحدد الرابط اللي هتتبعت إليه البيانات لما المستخدم يضغط إرسال. لو متكتبتيش، ترسل للصفحة الحالية.
  • method="get" — البيانات تظهر في شريط الرابط ?name=أسماء. مناسبة للبحث. method="post" — البيانات مخفية وأكثر أمانًا، للتسجيل وكلمات السر.
  • autocomplete="on" — يسمح للمتصفح يقترح قيم سابقة. "off" يعطّل الاقتراح.
  • target="_blank" — يفتح صفحة الرد في تاب جديد. "_self" في نفس التاب.
  • novalidate — يعطّل تحقق HTML التلقائي من البيانات، بتستخدميه لما عايزة تتحكمي بالتحقق بـ JavaScript.
  • enctype="multipart/form-data" — ضروري لو النموذج فيه input type="file" لرفع ملفات.

② <label> — وصف الحقل

label.html
<!-- طريقة 1: for + id -->
<label for="email">البريد الإلكتروني</label>
<input type="email" id="email" name="email">

<!-- طريقة 2: الحقل بداخل label مباشرة -->
<label>
  الاسم
  <input type="text" name="name">
</label>
المعاينة

③ <input> — الحقل متعدد الأشكال

وسم واحد يتغير شكله ووظيفته كاملًا حسب خاصية type. سنشرح كل أنواعه في الدرس القادم بالتفصيل.

④ <textarea> — نص متعدد الأسطر

textarea.html
<label for="msg">رسالتك</label>
<textarea
  id="msg"
  name="message"
  rows="5"
  cols="40"
  placeholder="اكتب رسالتك هنا..."
></textarea>
المعاينة

⑤ <select> و <option> — القائمة المنسدلة

select.html
<label for="city">المحافظة</label>
<select id="city" name="city">
  <option value="">-- اختر --</option>
  <option value="cairo">القاهرة</option>
  <option value="alex" selected>الإسكندرية</option>
  <option value="mans">المنصورة</option>
</select>
المعاينة

الإسكندرية محددة افتراضيًا بسبب selected

  • value في كل option هي القيمة اللي بتتبعت فعلًا، أما النص بين الوسمين فهو اللي بيظهر للمستخدم بس.
  • selected على أي option تجعلها هي الاختيار الظاهر بشكل افتراضي لما بتفتح الصفحة.

⑥ <datalist> — اقتراحات مع حرية الكتابة

datalist.html
<label for="browser">المتصفح المفضل</label>
<input
  type="text"
  id="browser"
  name="browser"
  list="browsers"
>
<datalist id="browsers">
  <option value="Chrome">
  <option value="Firefox">
  <option value="Safari">
</datalist>
المعاينة

✨ هذا المثال قابل للتجربة فعلًا!

  • الفرق بين datalist و select: في datalist المستخدم يقدر يكتب أي كلام حتى لو مش في القائمة، في select لازم يختار من الموجود فقط.
  • الربط بيتم عبر list="id-datalist" في input بيطابق id الـ datalist.

⑦ <button> — الزر

button.html
<!-- submit: يرسل النموذج (الافتراضي داخل form) -->
<button type="submit">إرسال</button>

<!-- reset: يمسح كل الحقول ويرجعها لقيمها الأصلية -->
<button type="reset">مسح الكل</button>

<!-- button: زر عادي لا يرسل ولا يمسح —
     يُستخدم مع JavaScript -->
<button type="button">زر عادي</button>

⑧ <fieldset> و <legend> — تجميع الحقول

fieldset.html
<form>
  <fieldset>
    <legend>📋 بيانات شخصية</legend>
    <label for="fn">الاسم الأول</label>
    <input type="text" id="fn" name="first_name">
  </fieldset>

  <fieldset>
    <legend>📞 بيانات التواصل</legend>
    <label for="ph">الهاتف</label>
    <input type="tel" id="ph" name="phone">
  </fieldset>

  <button type="submit">إرسال</button>
</form>
المعاينة
📋 بيانات شخصية
📞 بيانات التواصل
📌 ملخص الدرس
  • form — الحاوية الرئيسية مع action و method
  • label — يربط نص الوصف بالحقل عبر for + id
  • textarea — نص متعدد الأسطر
  • select + option — قائمة منسدلة
  • datalist — اقتراحات مع حرية كتابة
  • button — submit / reset / button
  • fieldset + legend — تجميع حقول مرتبطة
⚠️ أخطاء شائعة
  • نسيان name في أي حقل — بدونه البيانات لا ترسل.
  • عدم تطابق for في label مع id الحقل.
  • كتابة enctype بدون method="post" — الاتنين لازم يكونوا موجودين مع بعض لرفع الملفات.
↩ الفهرس
17
الدرس 1717

أنواع Input وخصائصه الكاملة

وسم input وحده يقدر يكون أكثر من 20 شكل مختلف! في هذا الدرس نشرح كل نوع مع مثال، ثم كل خاصية ممكنة بالتفصيل.

① أنواع Input — Input Types

📝 حقول النصوص والبيانات

input-text-types.html
<!-- text: نص عادي -->
<input type="text" name="username" placeholder="الاسم">

<!-- password: نص مخفي بنقاط -->
<input type="password" name="pass" placeholder="كلمة السر">

<!-- email: يتحقق تلقائيًا من صيغة البريد -->
<input type="email" name="email" placeholder="you@example.com">

<!-- number: أرقام فقط مع أسهم الزيادة والنقصان -->
<input type="number" name="age" min="1" max="100">

<!-- tel: رقم هاتف (لا يتحقق من الصيغة بنفسه) -->
<input type="tel" name="phone" placeholder="010xxxxxxxx">

<!-- url: يتحقق إن القيمة رابط صحيح -->
<input type="url" name="website" placeholder="https://...">

<!-- search: مثل text لكن بيظهر زر x لمسح النص -->
<input type="search" name="q" placeholder="ابحث...">

📅 التاريخ والوقت

input-date-types.html
<!-- date: منتقي تاريخ (يوم/شهر/سنة) -->
<input type="date" name="birthday">

<!-- time: منتقي وقت (ساعة:دقيقة) -->
<input type="time" name="meeting_time">

<!-- datetime-local: تاريخ + وقت معًا -->
<input type="datetime-local" name="appointment">

<!-- month: شهر + سنة فقط -->
<input type="month" name="start_month">

<!-- week: رقم الأسبوع + سنة -->
<input type="week" name="work_week">

☑️ حقول الاختيار

input-choice.html
<!-- radio: اختيار واحد من مجموعة،
     نفس name = مجموعة واحدة -->
<label>
  <input type="radio" name="gender" value="male">
  ذكر
</label>
<label>
  <input type="radio" name="gender" value="female" checked>
  أنثى
</label>

<!-- checkbox: اختيار متعدد -->
<label>
  <input type="checkbox" name="html" value="html" checked>
  HTML
</label>
<label>
  <input type="checkbox" name="css" value="css">
  CSS
</label>
المعاينة

النوع (radio — اختار واحد)

المواد (checkbox — اختار أكثر)

🎨 ملفات وألوان ومنزلق

input-special.html
<!-- file: رفع ملف. استخدم accept لتحديد نوع الملف -->
<input type="file" name="cv" accept=".pdf,.doc">

<!-- file multiple: رفع أكثر من ملف دفعة واحدة -->
<input type="file" name="photos" accept="image/*" multiple>

<!-- color: منتقي لون بصري -->
<label for="clr">اختر لون المحفظة</label>
<input type="color" id="clr" name="fav_color" value="#C1572F">

<!-- range: منزلق قيمة بين min و max -->
<label for="vol">الصوت</label>
<input type="range" id="vol" name="volume"
       min="0" max="100" step="10" value="50">

🔘 حقول الأزرار والبيانات الخفية

input-buttons-hidden.html
<!-- hidden: بيانات لا تظهر للمستخدم
     لكن تُرسل مع النموذج -->
<input type="hidden" name="user_id" value="1024">

<!-- submit: زر إرسال (بديل button type=submit) -->
<input type="submit" value="أرسل الآن">

<!-- reset: زر مسح الحقول -->
<input type="reset" value="مسح الكل">

<!-- button: زر عادي بدون سلوك افتراضي -->
<input type="button" value="اضغط هنا">

<!-- image: زر على شكل صورة -->
<input type="image" src="send-btn.png" alt="إرسال">

② خصائص Input — Input Attributes

🆔 الهوية والقيمة

attrs-identity.html
<!-- type: نوع الحقل — الأهم على الإطلاق -->
<!-- name: اسم البيانات اللي بترسل للسيرفر -->
<!-- id: معرف فريد للربط مع label أو CSS/JS -->
<!-- value: القيمة الابتدائية (أو المُرسَلة في radio/checkbox) -->
<input
  type="text"
  name="city"
  id="city-field"
  value="المنصورة"
>

🎯 تجربة المستخدم

attrs-ux.html
<!-- placeholder: نص خافت يختفي عند الكتابة -->
<input type="text" name="name" placeholder="مثال: أسماء موسى">

<!-- autofocus: الحقل ده يأخذ الفوكس أول ما الصفحة تفتح -->
<input type="search" name="q" autofocus>

<!-- autocomplete: on يسمح بالاقتراح، off يمنعه -->
<input type="password" name="pass" autocomplete="off">

<!-- size: عرض الحقل بعدد الحروف (تقريبًا) -->
<input type="text" name="code" size="6" placeholder="OTP">

✅ التحقق من البيانات (Validation)

attrs-validation.html
<!-- required: لازم تُملأ، وإلا النموذج مايتبعتش -->
<input type="email" name="email" required>

<!-- maxlength / minlength: حد أقصى وأدنى لعدد الحروف -->
<input type="text" name="user" minlength="3" maxlength="20">

<!-- min / max: حد أقصى وأدنى للقيمة الرقمية أو التاريخ -->
<input type="number" name="age" min="18" max="60">
<input type="date" name="dob" min="1980-01-01" max="2010-12-31">

<!-- step: الخطوة عند الزيادة/النقص في number أو range -->
<input type="number" name="price" min="0" step="50">

<!-- pattern: نمط regex يجب أن تطابقه القيمة -->
<input type="text" name="phone"
       pattern="[0-9]{11}"
       title="أدخل 11 رقم">

🔒 حالة الحقل

attrs-state.html
<!-- readonly: تقدر تشوف القيمة
     بس متقدرش تعدلها.
     القيمة بتترسل مع النموذج -->
<input type="text" name="country"
       value="مصر" readonly>

<!-- disabled: الحقل معطّل بالكامل.
     لا يمكن التفاعل معه و
     لا يُرسل مع النموذج -->
<input type="text" name="promo"
       value="SAVE10" disabled>

<!-- checked: radio أو checkbox محدد تلقائيًا -->
<input type="checkbox" name="agree" checked>
أوافق على الشروط

<!-- multiple: اختيار أكثر من ملف أو email -->
<input type="file" name="docs" multiple>
الفرق بين readonly وdisabled

readonly — يظهر طبيعي لكن لا يتعدل:

disabled — يظهر رمادي ومعطّل:

🖼️ خصائص الصور والربط

attrs-image-list.html
<!-- src و alt: للاستخدام مع type="image" فقط -->
<input type="image"
       src="submit-btn.png"
       alt="زر الإرسال"
       width="120"
       height="40">

<!-- accept: أنواع الملفات المسموحة في type="file" -->
<input type="file" name="img" accept="image/png, image/jpeg">
<input type="file" name="doc" accept=".pdf,.docx">

<!-- list: يربط input بـ datalist عبر id -->
<input type="text" name="tool" list="tools-list">
<datalist id="tools-list">
  <option value="VS Code"><option value="Sublime">
</datalist>

③ مثال شامل — نموذج تسجيل كامل

full-register-form.html
<form action="/register" method="post" enctype="multipart/form-data">

  <fieldset>
    <legend>البيانات الشخصية</legend>

    <label for="fname">الاسم الكامل *</label>
    <input type="text" id="fname" name="full_name"
           placeholder="أسماء موسى"
           minlength="4" maxlength="60"
           required autofocus>

    <label for="femail">البريد الإلكتروني *</label>
    <input type="email" id="femail" name="email"
           placeholder="you@example.com"
           autocomplete="email" required>

    <label for="fpass">كلمة المرور *</label>
    <input type="password" id="fpass" name="password"
           minlength="8"
           pattern="(?=.*[A-Za-z])(?=.*[0-9]).{8,}"
           title="8 أحرف على الأقل تشمل رقم وحرف"
           autocomplete="new-password" required>
  </fieldset>

  <fieldset>
    <legend>بيانات إضافية</legend>

    <label for="fphone">رقم الهاتف</label>
    <input type="tel" id="fphone" name="phone"
           placeholder="010xxxxxxxx"
           pattern="[0-9]{11}"
           title="أدخل 11 رقم">

    <label for="fdate">تاريخ الميلاد</label>
    <input type="date" id="fdate" name="birthday"
           min="1970-01-01" max="2010-12-31">

    <label for="fcity">المحافظة</label>
    <select id="fcity" name="city">
      <option value="">-- اختر --</option>
      <option value="cairo">القاهرة</option>
      <option value="mans" selected>المنصورة</option>
    </select>

    <label for="fbio">نبذة عنك</label>
    <textarea id="fbio" name="bio"
              rows="4" maxlength="300"
              placeholder="أخبرنا عن نفسك..."></textarea>

    <label for="favatar">صورة الملف الشخصي</label>
    <input type="file" id="favatar" name="avatar"
           accept="image/*">

    <label>
      <input type="checkbox" name="agree" value="yes" required>
      أوافق على الشروط والأحكام *
    </label>

    <!-- hidden: نرسل رقم النسخة في الخلفية -->
    <input type="hidden" name="form_version" value="2.0">
  </fieldset>

  <button type="submit">إنشاء الحساب</button>
  <button type="reset">مسح الكل</button>
</form>
📌 ملخص الدرس
  • أنواع text النصية: text / password / email / number / tel / url / search
  • أنواع التاريخ: date / time / datetime-local / month / week
  • أنواع الاختيار: radio / checkbox
  • أنواع خاصة: file / color / range / hidden
  • أزرار: submit / reset / button / image
  • خصائص التحقق: required / min / max / minlength / maxlength / pattern
  • خصائص الحالة: readonly / disabled / checked / multiple
⚠️ أخطاء شائعة
  • radio بدون نفس الـ name — هيسمح بتحديد أكثر من واحد بدل واحد بس.
  • كتابة checked على radio بدون value — القيمة المرسلة هتكون "on" بدل القيمة الحقيقية.
  • استخدام readonly بدل disabled وانتِ مش عايزة القيمة ترسل — readonly بيرسل القيمة.
  • نسيان enctype="multipart/form-data" مع رفع الملفات — الملف مش هيتبعت.
↩ الفهرس
18
الدرس 1818

الوسائط المتعددة

تضمين صوت، فيديو، أو حتى صفحة كاملة من موقع آخر داخل صفحتك.

media.html
<video controls width="300">
  <source src="movie.mp4">
</video>

<audio controls>
  <source src="song.mp3">
</audio>

<iframe src="https://..."></iframe>
المعاينة
🔊 ━━●━━━
  • <video> و <audio>: خاصية controls ضرورية لإظهار أزرار تشغيل/إيقاف/مستوى الصوت للمستخدم، وبدونها لن يستطيع التحكم في التشغيل.
  • <source> بداخلهما يحدد مصدر الملف، ويمكن وضع أكثر من <source> بصيغ مختلفة (مثل mp4 و webm) ليختار المتصفح الصيغة التي يدعمها.
  • <iframe> يُضمّن صفحة كاملة من مصدر خارجي بداخل صفحتك، تمامًا كنافذة داخل نافذة — يُستخدم كثيرًا لتضمين فيديوهات يوتيوب أو خرائط جوجل مباشرة بدون مغادرة موقعك.
  • يمكن كتابة نص بسيط بين وسمي <video></video> ليظهر فقط كرسالة احتياطية إذا كان متصفح الزائر قديمًا ولا يدعم تشغيل الفيديو.
📌 ملخص الدرس
  • audio/video لتشغيل الوسائط مباشرة
  • controls تعرض أزرار التحكم للمستخدم
  • source لتحديد أكثر من صيغة لنفس الملف
↩ الفهرس
19
الدرس 1919

الرموز الخاصة والتعليقات

كيف نعرض رمزًا محجوزًا مثل < داخل الصفحة؟ وكيف نكتب ملاحظات لا تظهر للزائر؟

  • التعليقات تُكتب بصيغة <!-- تعليق هنا -->، والمتصفح يتجاهلها تمامًا ولا يعرضها في الصفحة أبدًا — فائدتها فقط لتذكير نفسك أو زميلك بسبب كتابة جزء معيّن من الكود.
  • المشكلة: لو كتبت علامة < أو > مباشرة كنص عادي، سيظنّها المتصفح بداية أو نهاية وسم جديد ويتعامل معها كجزء من الكود لا كنص! لهذا نستخدم بدلًا منها "رموز خاصة" (Entities) تبدأ بـ & وتنتهي بـ ;، والجدول التالي يوضح أشهرها:
الرمز المكتوبيظهر في الصفحةالاستخدام
&lt;<علامة أصغر من
&gt;>علامة أكبر من
&amp;&علامة العطف
&quot;"علامة تنصيص
&nbsp;مسافةمسافة غير قابلة للكسر
comments.html
<!-- هذا تعليق لن يظهر في الصفحة، يستخدم للتوضيح فقط -->
<p>السعر أقل من &lt; 100 جنيه</p>
💡
لاحظ في المثال أعلاه أننا كتبنا &lt; بدل < مباشرة، لأن المتصفح كان سيظنّها بداية وسم جديد لو كتبناها كما هي.
📌 ملخص الدرس
  • الرموز الخاصة (Entities) لعرض رموز محجوزة مثل <
  • & لعرض علامة &
  • التعليقات <!-- --> لا تظهر للزائر أبدًا
↩ الفهرس
20
الدرس 2020

عناصر مفيدة للنص والكود

وسوم صغيرة لكنها تفيدك كثيرًا عند كتابة محتوى تقني أو نصوص منسقة.

text-extras.html
<blockquote>هذا اقتباس طويل من مصدر آخر.</blockquote>

<p>استخدم <code>console.log()</code> للطباعة.</p>

<p>اضغط <kbd>Ctrl</kbd> + <kbd>S</kbd> للحفظ.</p>

<abbr title="HyperText Markup Language">HTML</abbr
المعاينة
هذا اقتباس طويل من مصدر آخر.
استخدم console.log() للطباعة.
اضغط Ctrl + S للحفظ.
HTML (مرّر الماوس فوقها)
  • <blockquote> لاقتباس فقرة كاملة من مصدر خارجي، ويعرضها المتصفح غالبًا بهامش مائل عن باقي النص.
  • <q> لاقتباس قصير داخل سطر، ويضيف المتصفح علامات تنصيص تلقائيًا حوله.
  • <code> لعرض كلمة أو سطر برمجي مضمّن داخل النص بخط مختلف (مثل اسم دالة)، و <pre> يحافظ على كل المسافات والأسطر كما كتبتها بالضبط — يُستخدمان معًا غالبًا لعرض كتلة كود كاملة.
  • <kbd> لعرض مفتاح أو اختصار لوحة مفاتيح بشكل مميز يشبه الزر الحقيقي.
  • <abbr> لعرض اختصار مع شرح كامل يظهر عند تمرير الماوس فوقه عبر خاصية title.
  • <time> لتمييز تاريخ أو وقت بصيغة يفهمها المتصفح ومحركات البحث عبر خاصية datetime، مثل: <time datetime="2026-06-24">24 يونيو 2026</time>.
📌 ملخص الدرس
  • code لعرض جزء كود مضمّن
  • pre يحافظ على المسافات والأسطر كما كُتبت
  • blockquote لاقتباس نص من مصدر آخر
↩ الفهرس
21
الدرس 2121

figure و figcaption

الطريقة الصحيحة لعرض صورة مع وصف أو تعليق توضيحي مرتبط بها فعليًا.

figure.html
<figure>
  <img src="chart.png" alt="رسم بياني للمبيعات" width="200">
  <figcaption>الشكل 1: نمو المبيعات خلال 2026</figcaption>
</figure>
المعاينة
📊
الشكل 1: نمو المبيعات خلال 2026
  • <figure> حاوية تجمع صورة (أو فيديو أو رسم) مع وصفها في وحدة واحدة مرتبطة منطقيًا ببعضها.
  • <figcaption> هو التعليق التوضيحي نفسه، ويمكن وضعه قبل الصورة أو بعدها بداخل figure.
  • الفرق عن استخدام img وp منفصلين: استخدام figure يخبر المتصفح ومحركات البحث أن هذا النص "يصف" هذه الصورة بالتحديد، وهذا غير مضمون أبدًا لو استخدمت فقرة عادية بجانب الصورة بدون ربط حقيقي بينهما.
📌 ملخص الدرس
  • figure يغلّف صورة أو رسمًا مع وصفه
  • figcaption يكتب الوصف التوضيحي للمحتوى
  • يُستخدم غالبًا للصور والرسوم البيانية والكود الموصّف
↩ الفهرس
22
الدرس 2222

إمكانية الوصول Accessibility

كتابة كود يقدر أي شخص يستخدمه ويفهمه، حتى لو كان يعتمد على قارئ شاشة أو لا يميّز الألوان بوضوح.

  • رتّب العناوين بشكل منطقي ومتسلسل (h1 ثم h2 ثم h3) بدون تخطي مستوى، حتى يفهم قارئ الشاشة هيكل صفحتك بسهولة وسرعة.
  • استخدم <label> لكل حقل إدخال دائمًا، ولا تعتمد على placeholder وحده كوصف للحقل، لأنه يختفي بمجرد أن يبدأ المستخدم في الكتابة.
  • لا تنسَ alt لكل صورة بوصف حقيقي ومفيد، واتركه فراغًا alt="" فقط للصور الزخرفية البحتة التي لا تحمل معنى مهمًا للمحتوى.
  • لا تعتمد على اللون وحده لتوضيح معنى مهم (مثل كتابة رسالة خطأ بلون أحمر فقط بدون أي كلمة)، بل أضف أيضًا أيقونة أو كلمة توضيحية لمن لا يميّز الألوان جيدًا.
  • استخدم <button> للأزرار الحقيقية القابلة للضغط، لا <div> منسّق ليبدو كزر — لأن قارئ الشاشة يتعرف على button تلقائيًا كعنصر تفاعلي قابل للضغط، بعكس div العادي.
💡
إمكانية الوصول ليست تفصيلة إضافية اختيارية، بل جزء أساسي من احترافية أي موقع حقيقي يستخدمه الناس.
📌 ملخص الدرس
  • alt للصور، label للحقول: كلاهما لذوي الإعاقة البصرية
  • تباين الألوان الجيد يسهّل القراءة على الجميع
  • الترتيب المنطقي للعناوين يساعد قارئات الشاشة على التنقل
↩ الفهرس
23
الدرس 2323

أفضل الممارسات وكتابة كود نظيف

الفرق بين مبرمج مبتدئ ومحترف غالبًا في تفاصيل صغيرة كهذه.

❌ غير منظّم <DIV><p>نص
<img src=pic.jpg> </div>
✅ نظيف وصحيح <div> <p>نص</p> <img src="pic.jpg" alt="وصف"> </div>
  • اكتب أسماء الوسوم بحروف صغيرة دائمًا (lowercase) — معيار متفق عليه يسهّل القراءة.
  • أغلق كل وسم يحتاج إغلاقًا، ولا تنسَ علامات التنصيص حول قيم الخصائص.
  • حافظ على ترميز UTF-8 دائمًا، خصوصًا مع المحتوى العربي.
  • استخدم الوسوم الدلالية بدل الإفراط في <div> العشوائي، واستخدم id و class بحكمة كما تعلمنا.
  • ضع خاصية alt لكل صورة دون استثناء، وطبّق مبادئ إمكانية الوصول التي تعلمناها.
  • رتّب ملفاتك في مجلدات منطقية: css/, js/, images/، واستخدم المسارات الصحيحة بينها.
  • تحقّق من صحة كودك دوريًا عبر أدوات فحص مثل W3C Validator.
📌 ملخص الدرس
  • أسماء الوسوم بحروف صغيرة دائمًا
  • إغلاق كل وسم يحتاج إغلاقًا
  • تنظيم الملفات في مجلدات: css/, js/, images/
↩ الفهرس
24
الدرس 2424

Block و Inline وأشهر وسوم HTML5 الحديثة

قبل المشاريع النهائية، لازم تفهم فكرتين أساسيتين تفسّرا سلوك أي وسم تكتبه.

Block Elements <div> <p> <h1>, <ul>, <table> كل عنصر يأخذ سطرًا كاملًا بعرض الصفحة Inline Elements <span> <a> <strong> <img> <em> عناصر متجاورة بجانب بعضها داخل السطر نفسه
الفرق البصري بين عناصر Block (كل عنصر في سطر مستقل) وعناصر Inline (تتجاور في نفس السطر)
  • عنصر Block: يحتل عرض السطر بالكامل تلقائيًا ويبدأ كل واحد منه في سطر جديد، مثل <div>، <p>، <h1>-<h6>، <ul>، <table>، <section>.
  • عنصر Inline: يأخذ فقط المساحة التي يحتاجها نصه، ويتجاور مع العناصر الأخرى في نفس السطر بدون كسره، مثل <span>، <a>، <strong>، <em>، <img>.
  • القاعدة العملية: استخدم عناصر Block لتقسيم الصفحة لأقسام كبيرة، واستخدم عناصر Inline لتنسيق جزء صغير من نص داخل سطر أو فقرة.
  • أشهر وسوم HTML5 الدلالية الحديثة التي تعلّمناها وتُستخدم بكثرة في المواقع الحقيقية: <header> رأس الصفحة، <nav> قائمة التنقل، <main> المحتوى الرئيسي، <section> قسم مستقل بموضوع واحد، <article> محتوى قائم بذاته (مقال/منشور)، <aside> محتوى جانبي، <footer> تذييل الصفحة.
  • اختيار الوسم الدلالي الصحيح بدل <div> العشوائي يجعل كودك أوضح لك ولفريقك، ويفهمه محرك البحث وقارئ الشاشة بشكل أدق دون أي تأثير على الشكل النهائي.
📌 ملخص الدرس
  • Block يأخذ سطرًا كاملًا، Inline يتجاور داخل السطر
  • استخدم Block لتقسيم الصفحة وInline لتنسيق جزء من النص
  • header, nav, main, section, article, aside, footer أهم وسوم HTML5 الدلالية
🎉
وصلت لختام دروس هذه المذكرة! أكبر نقطة تحتاج تطويرها الآن هي زيادة التطبيق العملي: لا تكتفِ بقراءة الدروس، بل نفّذ كل تمرين وتحدٍ بنفسك أولًا قبل أي حل. حان وقت تطبيق كل ما تعلمته في مشاريع حقيقية كاملة محلولة، ثم اختبار فهمك في الصفحات القادمة.
↩ الفهرس
تطبيق عملي

مشاريع تطبيقية

أفضل طريقة لترسيخ أي درس هي بناء شيء حقيقي به — نفّذ المشاريع التالية بترتيبها

1

صفحة شخصية بسيطة

صفحة "عني" تعرّف بك، تجمع بين النصوص والصور والقوائم والروابط.
  • عنوان رئيسي باسمك ووسوم h1/h2 مرتبة منطقيًا
  • صورة شخصية بخاصية alt مناسبة وحجم محدد
  • فقرة "نبذة عني" بها كلمة أو جملة منسّقة بـ strong
  • قائمة ul تعرض مهاراتك أو هواياتك
  • رابط لحساباتك (مثل لينكدإن) يفتح في تبويب جديد
h1-h2img + altula target="_blank"
2

جدول درجات

جدول منظم يعرض مواد دراسية ودرجاتها، مع صف إجمالي.
  • جدول بأعمدة: اسم المادة - الدرجة - التقييم
  • استخدام thead للرأس و tbody للمحتوى
  • صف أخير بخلية مدمجة بـ colspan لعرض "الإجمالي"
  • caption يوضح عنوان الجدول
tablethead/tbodycolspancaption
3

فورم تسجيل

نموذج تسجيل حساب جديد يطبّق كل خصائص النماذج المتقدمة.
  • حقول: اسم، بريد إلكتروني، كلمة سر، تاريخ ميلاد
  • قائمة select لاختيار المدينة مع option محدد بـ selected
  • checkbox للموافقة على الشروط مع label واضح
  • تجميع الحقول داخل fieldset مع legend مناسب
  • زر submit في النهاية
input typesselect/optionfieldsetlabel for

المشروع النهائي: صفحة مطعم أو متجر بسيطة

المشروع الذي يجمع كل ما تعلمته في هذه المذكرة داخل صفحة واحدة متكاملة.
  • header يحتوي اسم المطعم/المتجر، و nav بقائمة تنقل داخلية
  • main يعرض الأطباق أو المنتجات كبطاقات (صورة + اسم + سعر)
  • استخدام figure و figcaption مع كل صورة منتج لعرض وصفها
  • footer يحتوي بيانات التواصل ورابط mailto للبريد
  • تطبيق id و class بشكل صحيح، وكل قواعد إمكانية الوصول التي تعلمتها
semantic tagsfigure/figcaptionfooter + mailtoaccessibility
🚀
لا يوجد حل واحد صحيح لهذه المشاريع — المهم أن تجرب، تخطئ، وتصحح بنفسك. هذه هي الطريقة الحقيقية لتعلّم البرمجة.
↩ الفهرس
قبل ما تبدأ الأسئلة

مراجعة شاملة مفصّلة

كل درس في بطاقة — وكل خاصية في سطر لوحدها مع شرحها. راجعها بالترتيب قبل حل الأسئلة.

📘 الأساسيات
01 مقدمة عن HTML
  • HTML = HyperText Markup Language — لغة توصيف وليست لغة برمجة، لا تحتوي على شروط أو حلقات تكرار.
  • مهمتها الوحيدة: تصف للمتصفح شكل الصفحة ومحتواها — "هذا عنوان، هذه فقرة، هنا صورة".
  • ثلاثي الويب: HTML = الهيكل (العظمة)، CSS = الديكور (الألوان والخطوط)، JavaScript = الحركة والتفاعل.
  • الوسوم Tags: كلمات محاطة بـ < > مثل <p> — المتصفح يقرأها ويحوّلها للشكل المرئي.
  • لماذا نبدأ بها؟ لأنه بدون HTML لا يوجد محتوى أصلًا لتُنسّقه CSS أو تتفاعل معه JavaScript.
02 هيكل صفحة HTML الأساسي
  • <!DOCTYPE html> — سطر ثابت في أول الملف، يخبر المتصفح أن الصفحة HTML5 حديثة.
  • <html> — الصندوق الكبير الذي يحتضن كل أجزاء الصفحة بدون استثناء.
  • lang="ar" داخل <html> — تحدد لغة المحتوى للمتصفح ومحركات البحث.
  • dir="rtl" داخل <html> — تحدد اتجاه الكتابة: rtl للعربية، ltr للإنجليزية.
  • <head> — يحتوي معلومات غير ظاهرة للزائر مثل العنوان والتنسيق والوصف.
  • <body> — يحتوي كل المحتوى الظاهر فعليًا للزائر في الصفحة.
  • <title> داخل head — يظهر كعنوان التبويب في المتصفح (مش داخل الصفحة نفسها).
  • <meta charset="UTF-8"> — يضمن عرض الحروف العربية والخاصة بشكل صحيح.
03 إنشاء أول ملف وتشغيله
  • امتداد الملف: لازم يكون .html — مثلاً index.html أو about.html.
  • التشغيل: افتح الملف بأي متصفح (Chrome أو Firefox) بالضغط عليه مرتين مباشرة.
  • المحرر: استخدم VS Code — يلوّن الكود ويكتشف الأخطاء ويكمّل الأوامر تلقائيًا.
  • اسم الملف الرئيسي: سمّه index.html — المتصفح يفتحه تلقائيًا لو فتحت المجلد مباشرة.
  • لا تحتاج إنترنت: لتشغيل HTML المحلي — يعمل مباشرة من جهازك بدون سيرفر.
04 وسوم Meta المتقدمة
  • <meta charset="UTF-8"> — يضمن ظهور العربية وكل الرموز الخاصة بشكل صحيح.
  • <meta name="viewport" content="width=device-width, initial-scale=1.0"> — يجعل الصفحة متجاوبة مع شاشات الموبايل.
  • <meta name="description" content="..."> — وصف الصفحة الذي يظهر في نتائج Google (مهم للسيو).
  • <meta name="author" content="..."> — اسم صاحب الصفحة أو الموقع.
  • <link rel="icon" href="logo.png"> — يضع أيقونة (favicon) في تبويب المتصفح بجانب العنوان.
  • كل وسوم meta: تُكتب داخل <head> فقط وليس داخل <body>.
05 الوسوم والعناصر والخصائص
  • الوسم (Tag): الكلمة داخل < > — مثل <p> هو وسم فتح، و</p> وسم إغلاق.
  • العنصر (Element): وسم الفتح + المحتوى + وسم الإغلاق كاملًا معًا.
  • الخاصية (Attribute): معلومة إضافية تُكتب داخل وسم الفتح — مثل href وsrc وalt.
  • صيغة الخاصية: اسم الخاصية = "القيمة" دائمًا بين علامات تنصيص.
  • وسوم ذاتية الإغلاق: بعض الوسوم لا تحتاج وسم إغلاق مثل <img> و<br> و<meta>.
  • التداخل: العناصر تتداخل داخل بعضها بشكل صحيح — الأخير في الفتح يجب أن يُغلق أولًا.
06 العناوين والفقرات
  • <h1> — العنوان الرئيسي الأكبر، يُستخدم مرة واحدة فقط في الصفحة.
  • <h2> — عناوين الأقسام الرئيسية داخل الصفحة.
  • <h3> إلى <h6> — عناوين فرعية بترتيب هرمي تنازلي في الأهمية والحجم.
  • <p> — فقرة نصية كاملة، المتصفح يضع مسافة تلقائيًا قبلها وبعدها.
  • <br> — سطر جديد داخل نفس الفقرة (لا تحتاج وسم إغلاق).
  • <hr> — خط أفقي فاصل بين الأقسام (لا تحتاج وسم إغلاق).
  • ترتيب منطقي: لا تتخطى مستوى — بعد h1 يأتي h2 مباشرة، وليس h4.
07 تنسيق النصوص
  • <strong> — تغميق النص مع تأكيد دلالي (أهمية عالية) — يُفضَّل على <b>.
  • <em> — تمييز النص بمائل مع تأكيد دلالي (تشديد) — يُفضَّل على <i>.
  • <mark> — تظليل النص بلون أصفر كالماركر، للإبراز البصري.
  • <del> — نص مشطوب عليه خط أفقي، يعني "محذوف أو قديم".
  • <ins> — نص تحته خط، يعني "مضاف أو جديد".
  • <sub> — نص صغير تحت السطر، مثل الصيغ الكيميائية H2O.
  • <sup> — نص صغير فوق السطر، مثل الأسس الرياضية X2.
  • <small> — نص أصغر من الاعتيادي، يُستخدم للملاحظات والحقوق.
🔗 المحتوى والعناصر
08 الروابط Hyperlinks
  • <a> — وسم الرابط، كل نص أو صورة بداخله تصبح قابلة للضغط.
  • href="..." — الخاصية الإلزامية التي تحدد الوجهة (URL أو ملف أو قسم).
  • target="_blank" — يفتح الرابط في تبويب جديد بدلًا من نفس الصفحة.
  • href="mailto:email@example.com" — يفتح برنامج البريد الإلكتروني مباشرة.
  • href="tel:+201234567890" — يفتح تطبيق الاتصال على الموبايل مباشرة.
  • href="#id-name" — رابط داخلي ينقل للقسم الذي يحمل هذا الـ id في نفس الصفحة.
  • href="#" — رابط وهمي لا ينقل لأي مكان، يُستخدم مؤقتًا أثناء التطوير.
09 الصور
  • <img> — وسم الصورة، لا يحتاج وسم إغلاق (ذاتي الإغلاق).
  • src="..." — إلزامي، مسار الصورة أو رابطها من الإنترنت.
  • alt="..." — إلزامي، نص بديل يظهر لو فشل تحميل الصورة أو لقارئ الشاشة.
  • width="..." — يحدد عرض الصورة بالبكسل أو نسبة مئوية.
  • height="..." — يحدد ارتفاع الصورة، يُفضَّل تحديده مع العرض لتجنب القفز أثناء التحميل.
  • loading="lazy" — تأجيل تحميل الصورة لحين ظهورها في الشاشة (يسرّع الموقع).
  • alt فارغ: للصور الزخرفية البحتة اكتب alt="" — لا تحذف الخاصية كلها.
10 المسارات Paths
  • مسار نسبي: ملف موجود على جهازك — مثل images/photo.jpg (نفس المجلد).
  • ./ — يعني "ابحث في نفس مجلد الملف الحالي".
  • ../ — يعني "اصعد مجلدًا للأعلى"، مثل ../images/logo.png.
  • مسار مطلق: رابط كامل من الإنترنت يبدأ بـ https://.
  • حساسية الحالة: الأسماء على السيرفر حساسة للحروف الكبيرة والصغيرة — Photo.jpg غير photo.jpg.
  • نصيحة: استخدم دائمًا أسماء ملفات صغيرة بدون مسافات — استبدل المسافات بـ -.
11 القوائم
  • <ul> — قائمة غير مرتبة (نقاط)، العناصر بداخلها بنفس الأهمية.
  • <ol> — قائمة مرتبة (أرقام أو حروف)، ترتيب العناصر مهم.
  • <li> — عنصر القائمة، يُستخدم داخل ul أو ol.
  • <dl> — قائمة وصفية، تحتوي مصطلح وتعريفه معًا.
  • <dt> — المصطلح أو الكلمة المُعرَّفة داخل <dl>.
  • <dd> — تعريف المصطلح أو شرحه داخل <dl>.
  • قوائم متداخلة: يمكن وضع ul أو ol داخل li لإنشاء قائمة فرعية.
12 الجداول
  • <table> — الحاوية الرئيسية لكل الجدول.
  • <caption> — عنوان الجدول التوضيحي، يُكتب مباشرة بعد <table>.
  • <thead> — صف (أو أكثر) رأس الجدول، يُميّزه المتصفح دلاليًا.
  • <tbody> — جسم الجدول الذي يحتوي بيانات المحتوى الرئيسي.
  • <tfoot> — تذييل الجدول، يُستخدم للإجماليات والملاحظات.
  • <tr> — صف كامل داخل الجدول (Table Row).
  • <th> — خلية رأس (Header) — نصها بالغامق ومتوسّط تلقائيًا.
  • <td> — خلية بيانات عادية داخل الصف (Table Data).
  • colspan="2" — دمج عدد من الأعمدة أفقيًا داخل خلية واحدة.
  • rowspan="2" — دمج عدد من الصفوف عموديًا داخل خلية واحدة.
13 الحاويات والعناصر الدلالية
  • <div> — حاوية عامة لتجميع عناصر، بلا معنى دلالي، يُستخدم للتنسيق.
  • <span> — حاوية inline داخل السطر لتنسيق جزء صغير من النص بلا كسر للسطر.
  • <header> — رأس الصفحة أو القسم، يحتوي الشعار والتنقل الرئيسي.
  • <nav> — قائمة التنقل الرئيسية بين صفحات أو أقسام الموقع.
  • <main> — المحتوى الرئيسي الفريد للصفحة، مرة واحدة فقط في كل صفحة.
  • <section> — قسم مستقل من الصفحة بموضوع واحد، له عنوان خاص.
  • <article> — محتوى مستقل قائم بذاته (مقال أو منشور أو خبر).
  • <aside> — محتوى جانبي مكمّل وليس أساسيًا مثل الإعلانات أو الروابط ذات الصلة.
  • <footer> — تذييل الصفحة أو القسم، يحتوي حقوق النشر وبيانات التواصل.
14 ربط CSS و JavaScript
  • <link rel="stylesheet" href="style.css"> — يربط ملف CSS خارجي، يُكتب داخل <head>.
  • <style>...</style> — كتابة CSS مباشرة داخل الصفحة في <head> (للاستخدام المؤقت).
  • style="..." — CSS مضمّن على العنصر نفسه، أقل استخدامًا ويصعب صيانته.
  • <script src="app.js"></script> — يربط ملف JavaScript خارجي.
  • موضع Script: يُفضَّل وضعه آخر <body> قبل </body> مباشرة لتحميل المحتوى أولًا.
  • defer في وسم script — يؤخر تنفيذه لحين اكتمال تحميل الصفحة إن وُضع في head.
15 id و class
  • id="اسم" — معرّف فريد، يُستخدم لعنصر واحد فقط في كل الصفحة.
  • class="اسم" — يمكن تكراره على عناصر متعددة، وعنصر واحد يمكن أن يحمل أكثر من class.
  • في CSS: نستهدف id بـ #اسم، ونستهدف class بـ .اسم.
  • id للروابط الداخلية: الرابط href="#section1" ينقل للعنصر الذي عنده id="section1".
  • تعدد الكلاسات: يمكن كتابة class="card active highlight" بمسافة بين كل كلاس.
  • أسماء صحيحة: لا تبدأ بأرقام، ولا تحتوي مسافات — استخدم - أو _ للفصل.
⚡ التفاعل والمحتوى المتقدم
16 النماذج Forms — العناصر والوسوم
  • <form> — الحاوية الرئيسية لكل عناصر النموذج.
  • action="..." في form — رابط الصفحة أو السيرفر الذي يستقبل البيانات عند الإرسال.
  • method="get" — يُرسل البيانات في رابط URL (ظاهرة، مناسبة للبحث).
  • method="post" — يُرسل البيانات في جسم الطلب (مخفية، مناسبة للنماذج الحساسة).
  • <label for="id"> — نص توضيحي مرتبط بحقل معيّن عبر خاصية for.
  • <input> — حقل إدخال، نوعه يتحكم في شكله وعمله عبر خاصية type.
  • <textarea> — منطقة نص كبيرة متعددة الأسطر للتعليقات أو الرسائل.
  • <select> + <option> — قائمة منسدلة، كل خيار هو option بداخلها.
  • <fieldset> — يجمع حقولًا ذات صلة داخل إطار مرئي.
  • <legend> — عنوان الـ fieldset يظهر فوق الإطار.
  • <datalist> — قائمة اقتراحات تظهر أثناء الكتابة في حقل نصي.
  • <button type="submit"> — زر الإرسال، يرسل بيانات النموذج.
  • <button type="reset"> — يمسح كل البيانات في النموذج.
17 أنواع Input وخصائصه الكاملة
  • type="text" — حقل نصي عادي لأي نص.
  • type="email" — يتحقق تلقائيًا من صيغة البريد الإلكتروني.
  • type="password" — يخفي النص المكتوب بنقاط.
  • type="number" — يقبل أرقامًا فقط مع أسهم للزيادة والإنقاص.
  • type="tel" — لأرقام الهاتف، يفتح لوحة أرقام على الموبايل.
  • type="url" — يتحقق من صيغة الرابط تلقائيًا.
  • type="date" — يعرض منتقي تاريخ بصري.
  • type="time" — يعرض منتقي وقت.
  • type="datetime-local" — تاريخ ووقت معًا.
  • type="checkbox" — مربع تحديد، يمكن تحديد أكثر من خيار.
  • type="radio" — زر اختيار، لا يمكن اختيار أكثر من واحد من نفس الـ name.
  • type="file" — يفتح مستعرض الملفات لرفع ملف.
  • type="color" — يعرض منتقي ألوان بصري.
  • type="range" — شريط تمرير بين قيمة دنيا وعظمى.
  • type="hidden" — حقل غير ظاهر، يُرسل قيمة خفية مع النموذج.
  • type="search" — حقل بحث مع زر مسح تلقائي.
  • required — الحقل إلزامي، لا يُرسل النموذج إلا بعد ملئه.
  • placeholder="..." — نص توضيحي يظهر داخل الحقل الفارغ.
  • value="..." — قيمة افتراضية مملوءة مسبقًا في الحقل.
  • min="..." max="..." — الحد الأدنى والأقصى للأرقام والتواريخ.
  • minlength="..." maxlength="..." — الحد الأدنى والأقصى لعدد الأحرف.
  • pattern="..." — نمط Regex يجب أن يطابقه المدخل.
  • disabled — يُعطّل الحقل، لا يمكن تعديله ولا إرسال قيمته.
  • readonly — يجعل الحقل للقراءة فقط لكن قيمته تُرسل مع النموذج.
  • checked — يجعل checkbox أو radio محددًا بشكل افتراضي.
  • multiple — يسمح باختيار أكثر من ملف أو بريد في نفس الحقل.
  • autocomplete="off" — يمنع المتصفح من اقتراح قيم سابقة.
18 الوسائط المتعددة
  • <video> — وسم تضمين الفيديو داخل الصفحة مباشرة.
  • <audio> — وسم تضمين ملف صوتي داخل الصفحة.
  • controls — إلزامي لعرض أزرار تشغيل / إيقاف / مستوى الصوت للمستخدم.
  • autoplay — يبدأ التشغيل تلقائيًا عند فتح الصفحة (تجنّبه مع الصوت لأنه مزعج).
  • loop — يعيد التشغيل تلقائيًا بعد الانتهاء.
  • muted — يكتم الصوت تلقائيًا عند التشغيل.
  • poster="..." داخل video — صورة تظهر قبل بدء تشغيل الفيديو.
  • <source src="..." type="video/mp4"> — يحدد مصدر الملف وصيغته.
  • أكثر من source: اكتب صيغًا مختلفة (mp4 + webm) ليختار المتصفح ما يدعمه.
  • <iframe src="..."> — يُضمّن صفحة كاملة من موقع آخر (يوتيوب، خرائط).
  • width و height داخل iframe — تحدد أبعاد الإطار المضمّن.
  • allowfullscreen في iframe — يسمح للمستخدم بالتكبير للشاشة الكاملة.
19 الرموز الخاصة والتعليقات
  • <!-- تعليق --> — لا يظهر للزائر، فائدته فقط للمبرمج لشرح الكود.
  • &lt; — يعرض علامة < كنص عادي بدون تفسيرها كوسم.
  • &gt; — يعرض علامة > كنص عادي.
  • &amp; — يعرض علامة & كنص عادي.
  • &quot; — يعرض علامة التنصيص " داخل قيمة خاصية.
  • &apos; — يعرض علامة الفاصلة المفردة '.
  • &nbsp; — مسافة غير قابلة للكسر، تمنع المتصفح من التفاف النص عندها.
  • &copy; — رمز حقوق النشر ©.
  • &reg; — رمز العلامة التجارية المسجّلة ®.
  • القاعدة: أي رمز محجوز في HTML يُكتب كـ Entity تبدأ بـ & وتنتهي بـ ;.
20 عناصر النص والكود
  • <code> — عرض جزء كود مضمّن داخل سطر نصي بخط monospace.
  • <pre> — يحافظ على كل المسافات والأسطر كما كُتبت، يُستخدم لعرض أكواد متعددة الأسطر.
  • <pre><code> — الأفضل لعرض كتلة كود كاملة مع الحفاظ على تنسيقها.
  • <blockquote> — اقتباس طويل من مصدر آخر، المتصفح يضع مسافة بادئة تلقائيًا.
  • cite="..." داخل blockquote — رابط المصدر الأصلي للاقتباس.
  • <q> — اقتباس قصير مضمّن داخل السطر، المتصفح يضع حوله علامات تنصيص تلقائيًا.
  • <kbd> — يعرض مفاتيح لوحة المفاتيح بشكل مميز، مثل <kbd>Ctrl+C</kbd>.
  • <abbr title="..."> — اختصار مع شرح كامل يظهر عند التمرير فوقه.
  • <time datetime="2026-06-24"> — تاريخ أو وقت بصيغة يفهمها المتصفح ومحركات البحث.
21 figure و figcaption
  • <figure> — حاوية تجمع صورة أو فيديو أو كود مع وصفه في وحدة واحدة.
  • <figcaption> — التعليق التوضيحي للمحتوى، يوضع قبل أو بعد العنصر داخل figure.
  • الفرق عن img + p: figure يُعلم المتصفح ومحركات البحث أن النص "يصف" هذه الصورة تحديدًا.
  • الاستخدام الأمثل: صور المحتوى، الرسوم البيانية، مقتطفات الكود الموصّفة.
  • ليس للصور الزخرفية: الصور التي لا تحمل معلومة لا تحتاج figure، فقط img مع alt فارغ.
🏆 الاحترافية
22 إمكانية الوصول Accessibility
  • alt واضح لكل صورة — وصف حقيقي مفيد، مش "صورة" فقط.
  • <label for="id"> لكل حقل — لا تعتمد على placeholder وحده لأنه يختفي عند الكتابة.
  • ترتيب منطقي للعناوين: h1 ثم h2 ثم h3 بدون تخطي مستوى.
  • لا تعتمد على اللون وحده: أضف كلمة أو أيقونة مع رسائل الخطأ أو التنبيه.
  • <button> للأزرار — لا <div> منسّق كزر، لأن قارئ الشاشة لا يتعرف عليه.
  • تنقل بمفتاح Tab: كل العناصر التفاعلية يجب أن تكون قابلة للوصول عبر لوحة المفاتيح.
  • تباين الألوان: تأكد من وضوح النص على خلفيته لمن لديهم ضعف بصري.
  • الوسوم الدلالية: header/nav/main/footer تساعد قارئ الشاشة على التنقل السريع بين أقسام الصفحة.
23 أفضل الممارسات وكتابة كود نظيف
  • حروف صغيرة: اكتب أسماء الوسوم والخصائص بحروف صغيرة دائمًا — <div> لا <DIV>.
  • أغلق كل وسم: كل وسم يحتاج إغلاقًا يجب أن يُغلق — لا تترك وسومًا مفتوحة.
  • علامات التنصيص: قيم الخصائص دائمًا بين "..." — لا تكتب src=photo.jpg.
  • المسافات البادئة (Indentation): اضغط Tab لكل مستوى تداخل لتجعل الكود قابلًا للقراءة.
  • UTF-8: استخدم دائمًا charset="UTF-8" خصوصًا مع المحتوى العربي.
  • وسوم دلالية: استخدم header/nav/main/footer بدل div عشوائي في كل مكان.
  • alt للصور: لا تترك أي صورة بدون alt — حتى لو كانت فارغة alt="".
  • تنظيم الملفات: ضع CSS في css/، JavaScript في js/، الصور في images/.
  • W3C Validator: افحص كودك دوريًا على validator.w3.org للتأكد من صحته.
24 Block و Inline ووسوم HTML5 الحديثة
  • عنصر Block: يأخذ عرض الصفحة كاملًا ويبدأ في سطر جديد تلقائيًا.
  • أمثلة Block: <div>، <p>، <h1>-<h6>، <ul>، <table>، <section>، <header>.
  • عنصر Inline: يأخذ فقط مساحة محتواه ويتجاور مع العناصر الأخرى في نفس السطر.
  • أمثلة Inline: <span>، <a>، <strong>، <em>، <img>، <code>.
  • القاعدة العملية: Block لتقسيم الصفحة لأقسام كبيرة، Inline لتنسيق جزء صغير من النص.
  • <header> — رأس الصفحة أو القسم.
  • <nav> — قائمة التنقل الرئيسية.
  • <main> — المحتوى الرئيسي، مرة واحدة فقط في كل صفحة.
  • <section> — قسم بموضوع واحد مستقل، له عنوان.
  • <article> — محتوى مستقل تمامًا (مقال أو منشور أو خبر).
  • <aside> — محتوى جانبي مكمّل مثل الإعلانات والروابط ذات الصلة.
  • <footer> — تذييل الصفحة أو القسم.
  • لماذا الدلالية مهمة؟ تُساعد محركات البحث وقارئات الشاشة على فهم هيكل الصفحة بدقة.
لو حسّيت إن نقطة معيّنة مش واضحة 100%، رجّع لدرسها بالضغط على رابطه في الفهرس قبل ما تكمل لحل الأسئلة.
↩ الفهرس
قسم التقييم

أسئلة الاختيار من متعدد

اختر إجابة واحدة فقط لكل سؤال بتظليل الدائرة المناسبة

1 ما هو الوسم المستخدم لإنشاء رابط تشعبي؟
2 أي وسم يُستخدم لإدراج صورة في الصفحة؟
3 ما الخاصية التي تحدد النص البديل للصورة؟
4 أي عنصر يُستخدم كحاوية غير دلالية على مستوى الكتلة؟
5 كم عدد مستويات العناوين في HTML؟
6 ما الخاصية التي تجعل الرابط يُفتح في نافذة جديدة؟
7 أي وسم يُنشئ قائمة مرتبة بالأرقام؟
8 ما الصيغة الصحيحة لكتابة تعليق في HTML؟
9 ما الفرق العملي بين id و class؟
10 أي رمز صحيح للرجوع لمجلد أعلى في شجرة الملفات؟
11 خاصية meta المسؤولة عن ضبط عرض الصفحة على الموبايل هي:
12 ما الوسم المستخدم لتجميع صورة مع تعليقها التوضيحي؟
13 أي خاصية تمنع تعديل قيمة الحقل، لكنها ترسلها مع النموذج؟
14 ما الوسم الصحيح لاستخدام زر قابل للضغط فعليًا (لإمكانية الوصول)؟
↩ الفهرس
قسم التقييم

صواب أو خطأ

ضع علامة ✕ في المربع المناسب

1 HTML لغة برمجة تحتوي على شروط وحلقات تكرارية.
صواب خطأ
2 الوسم <br> يحتاج إلى وسم غالق منفصل دائمًا.
صواب خطأ
3 عنصر <strong> يضيف دلالة أهمية للنص وليس فقط تنسيقًا غامقًا.
صواب خطأ
4 من الأفضل استخدام وسم <h1> واحد فقط في كل صفحة.
صواب خطأ
5 خاصية href تُستخدم مع وسم <img> لتحديد مصدر الصورة.
صواب خطأ
6 يمكن دمج عدة صفوف في خلية جدول واحدة باستخدام خاصية rowspan.
صواب خطأ
7 من الأفضل أن تكتب أسماء الوسوم بحروف صغيرة دائمًا.
صواب خطأ
8 عنصر iframe يستخدم لتضمين صفحة من موقع آخر داخل صفحتنا.
صواب خطأ
9 الطريقة الخارجية لإضافة CSS هي الأقل استخدامًا في المشاريع الحقيقية.
صواب خطأ
10 خاصية placeholder تجعل الحقل إلزامي التعبئة قبل الإرسال.
صواب خطأ
11 يمكن أن يحتوي وسم video على أكثر من source لدعم صيغ مختلفة.
صواب خطأ
12 class يمكن استخدامه على أكثر من عنصر في نفس الصفحة.
صواب خطأ
13 من الأفضل الاعتماد على اللون فقط لتوضيح وجود خطأ في النموذج.
صواب خطأ
14 الرمز ../ في المسار يعني الدخول لمجلد فرعي جديد.
صواب خطأ
15 fieldset يستخدم لتجميع مجموعة من حقول النموذج المرتبطة ببعضها.
صواب خطأ
16 ملف باسم index.html له معنى خاص ويُعامل كصفحة رئيسية للموقع.
صواب خطأ
أكمل الفراغ
1. وسم يُستخدم لإنشاء فقرة نصية.
2. خاصية تحدد وجهة الرابط داخل وسم <a>.
3. الوسم يُستخدم لتضمين فيديو من موقع آخر داخل الصفحة.
4. يبدأ أي مستند HTML5 بالسطر لتحديد نوع المستند.
5. لإضافة ملف CSS خارجي نستخدم الوسم داخل <head>.
6. الرمز الخاص يُستخدم لعرض علامة "أصغر من" < داخل الصفحة.
7. لتمييز نص بخلفية صفراء كقلم فسفوري نستخدم وسم .
8. لإنشاء قائمة تعريفية (مصطلح وتعريف) نستخدم وسم .
9. خاصية تستخدم مع وسم input لتحديد نوع الحقل (نص، بريد، تاريخ...).
10. لربط وصف label بحقل إدخال معين نستخدم خاصية المطابقة لمعرف الحقل.
11. وسم يستخدم لتشغيل ملف صوتي داخل الصفحة.
12. لدمج عمودين في خلية واحدة بجدول نستخدم خاصية .
13. خاصية تحدد عنصرًا واحدًا فريدًا في الصفحة بالكامل.
14. وسم يضيف تعليقًا توضيحيًا لصورة بداخل figure.
15. لإعطاء عنوان لمجموعة حقول داخل fieldset نستخدم وسم .
16. رمز في المسار يعني "الرجوع مجلد واحد للخلف".
↩ الفهرس
قسم التقييم

أسئلة تطبيقية

اكتب كود HTML بخط يدك في المساحة المخصصة أسفل كل سؤال

1 اكتب كود HTML لإنشاء قائمة غير مرتبة تحتوي على 3 فواكه.
2 اكتب كود رابط يفتح موقع جوجل في نافذة جديدة.
3 اكتب كود نموذج (Form) بسيط يحتوي على حقل اسم وزر إرسال.
4 صمّم جدولًا بسيطًا (عمودان × صفان) يعرض اسمين وأعمارهما.
5 اكتب كود عنصر figure يحتوي على صورة منتج مع تعليق توضيحي باسم المنتج.
6 اكتب كود يربط صورة موجودة داخل مجلد فرعي اسمه assets، باستخدام مسار نسبي صحيح.
7 اكتب كود fieldset يحتوي على legend بعنوان "بيانات التواصل" وحقل بريد إلكتروني بداخله.
↩ الفهرس
للمراجعة الذاتية فقط

مفتاح الإجابات

راجع إجاباتك بنفسك بعد الانتهاء من الحل

الاختيار من متعدد
1 <a>
2 <img>
3 alt
4 div
5 6
6 target="_blank"
7 <ol>
8 <!-- -->
9 id فريد / class يتكرر
10 ../
11 viewport
12 figure
13 readonly
14 <button>
صواب وخطأ
1 خطأ
2 خطأ
3 صواب
4 صواب
5 خطأ
6 صواب
7 صواب
8 صواب
9 خطأ
10 خطأ
11 صواب
12 صواب
13 خطأ
14 خطأ
15 صواب
16 صواب
أكمل الفراغ
1 <p>
2 href
3 <iframe>
4 <!DOCTYPE html>
5 <link>
6 &lt;
7 <mark>
8 <dl>
9 type
10 for
11 <audio>
12 colspan
13 id
14 <figcaption>
15 <legend>
16 ../
الأسئلة التطبيقية والمشاريع لا توجد لها إجابة واحدة قطعية — تأكد فقط من إغلاق كل الوسوم بشكل صحيح، واستخدام الخصائص المناسبة (href, src, alt, name...) كما تعلمت في الدروس.
🌟
أحسنت! بإكمالك هذه المذكرة تكون قد أنهيت أساسيات HTML بالكامل تقريبًا. الخطوة التالية هي تعلّم CSS لتنسيق ما بنيته هنا.
↩ الفهرس
حل كامل جاهز • المشروع 1 من 3

صفحة تعريف شخصية (Portfolio)

صفحة "عني" حقيقية تجمع العناوين والنصوص المنسّقة والصور والقوائم والروابط والوسوم الدلالية في مكان واحد. اقرأ التعليقات فوق كل جزء لتعرف من أي درس أتى.

portfolio.html
<!-- 1. الهيكل الأساسي: درس 2 -->
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
  <!-- 2. وسوم meta وربط CSS: درس 4 و14 -->
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>محمد علي - مطوّر واجهات</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <!-- 3. header ونav: درس 13 -->
  <header id="top">
    <h1>محمد علي</h1>
    <p>مطوّر واجهات أمامية شغوف بتعلّم كل جديد</p>
    <nav>
      <a href="#about">نبذة عني</a>
      <a href="#skills">مهاراتي</a>
      <!-- 4. رابط خارجي بتبويب جديد: درس 8 -->
      <a href="https://linkedin.com" target="_blank">حسابي على لينكدإن</a>
    </nav>
  </header>

  <main>

    <!-- 5. صورة موصّفة بـ figure وfigcaption: درس 21 -->
    <section id="about">
      <h2>نبذة عني</h2>
      <figure>
        <img src="me.jpg" alt="محمد علي يجلس أمام شاشة كمبيوتر" width="220" height="220">
        <figcaption>محمد وقت العمل على أحد المشاريع</figcaption>
      </figure>

      <!-- 6. تنسيق نصي strong/em: درس 7 -->
      <p>أنا <strong>مطوّر واجهات أمامية</strong> بدأت رحلتي بتعلّم HTML، وأحب تحويل التصاميم إلى صفحات <em>حيّة وتفاعلية</em>.</p>
    </section>

    <!-- 7. قائمة غير مرتبة: درس 11 -->
    <section id="skills">
      <h2>مهاراتي</h2>
      <ul>
        <li>HTML5 الدلالي</li>
        <li>CSS وتصميم متجاوب</li>
        <li>أساسيات JavaScript</li>
      </ul>
    </section>
  </main>

  <!-- 8. footer ببريد mailto: درس 8 و13 -->
  <footer>
    <p>تواصل معي: <a href="mailto:[email protected]">[email protected]</a></p>
  </footer>
</body>
</html>
  • الصفحة كلها مبنية بوسوم دلالية (header, nav, main, section, footer) بدل div العادي، تمامًا كما تعلمنا في درس الحاويات.
  • كل صورة لها alt حقيقي ووصفي، تطبيقًا لما تعلمته في درس إمكانية الوصول.
  • جرّب نسخ الكود في ملف portfolio.html وغيّر الاسم والصورة والمهارات لتكون نسختك الخاصة.
➡️
المشروع التالي يطبّق الجداول والفورم المتقدم وعناصر أخرى لم تظهر هنا.
↩ الفهرس
حل كامل جاهز • المشروع 2 من 3

بطاقة منتج وفورم طلب

صفحة منتج كاملة بمواصفات في جدول، اقتباس من عميل، وفورم طلب حقيقي بحقول متنوعة — تطبيق عملي على الجداول والنماذج المتقدمة.

product.html
<!-- 1. الهيكل الأساسي: درس 2 -->
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
  <meta charset="UTF-8">
  <title>متجر الحقيبة الذكية</title>
</head>
<body>

  <!-- 2. header وmain: درس 13 -->
  <header>
    <h1>متجر الحقيبة الذكية</h1>
  </header>

  <main>
    <section>
      <h2>تفاصيل المنتج</h2>

      <!-- 3. figure وfigcaption: درس 21 -->
      <figure>
        <img src="bag.jpg" alt="حقيبة ظهر سوداء بجيب لاب توب" width="240">
        <figcaption>تتحمّل حتى 15 كجم وتحتوي جيبًا مبطنًا للابتوب</figcaption>
      </figure>

      <!-- 4. جدول مواصفات بـ caption/thead/tbody: درس 12 -->
      <table>
        <caption>مواصفات الحقيبة</caption>
        <thead>
          <tr><th>الخاصية</th><th>القيمة</th></tr>
        </thead>
        <tbody>
          <tr><td>السعر</td><td>450 ج.م</td></tr>
          <tr><td>الوزن</td><td>900 جم</td></tr>
        </tbody>
      </table>

      <!-- 5. اقتباس: درس 20 -->
      <blockquote>"أفضل حقيبة استخدمتها، خفيفة وعملية جدًا"</blockquote>
    </section>

    <!-- 6. فورم بفيلدست وليجند: درس 17 -->
    <section>
      <h2>اطلب الآن</h2>
      <form>
        <fieldset>
          <legend>بيانات الطلب</legend>

          <!-- 7. مدخلات number وselect وradio: درس 16 و17 -->
          <label for="qty">الكمية</label>
          <input type="number" id="qty" min="1" max="10" value="1">

          <label for="color">اللون</label>
          <select id="color">
            <option>أسود</option>
            <option>كحلي</option>
          </select>

          <label><input type="radio" name="pay" checked> عند الاستلام</label>
          <label><input type="radio" name="pay"> تحويل بنكي</label>

          <button type="submit">تأكيد الطلب</button>
        </fieldset>
      </form>
    </section>
  </main>

  <!-- 8. رمز خاص في الفوتر: درس 19 -->
  <footer>
    <p>جميع الحقوق محفوظة &copy; 2026</p>
  </footer>
</body>
</html>
  • الجدول هنا يستخدم caption وthead وtbody معًا لعرض بيانات منظمة بشكل احترافي.
  • مجموعة radio الاثنين يشتركون في نفس name="pay" حتى لا يُختار أكثر من خيار دفع واحد في نفس الوقت.
  • جرّب نسخ الكود في ملف product.html وغيّر اسم المنتج وصورته ومواصفاته لمنتج من اختيارك.
➡️
المشروع الأخير يجمع كل ما سبق تقريبًا في صفحة واحدة متكاملة بالوسوم الدلالية الكاملة.
↩ الفهرس
حل كامل جاهز • المشروع 3 من 3

صفحة مقهى صغيرة

هذا المشروع يجمع تقريبًا كل وسم تعلمته في هذه المذكرة داخل صفحة واحدة كاملة وحقيقية — اقرأ الكود سطرًا سطرًا وقارنه بما تعلمته في كل درس قبل أن تنتقل لتجربتك الخاصة.

cafe.html
<!-- 1. الهيكل الأساسي: درس 2 -->
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
  <!-- 2. وسوم meta: درس 4 -->
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>مقهى الزاوية</title>
  <!-- 3. ربط CSS خارجي: درس 14 -->
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <!-- 4. header ونav الدلاليان: درس 13 و24 -->
  <header id="top">
    <h1>☕ مقهى الزاوية</h1>
    <nav>
      <a href="#menu">المنيو</a>
      <a href="#contact">تواصل معنا</a>
    </nav>
  </header>

  <main>

    <!-- 5. section بمعرّف menu: درس 13 و21 -->
    <section id="menu">
      <h2>المنيو</h2>

      <!-- 6. جدول بالأسعار: درس 12 -->
      <table>
        <caption>أسعار المشروبات</caption>
        <thead>
          <tr><th>المشروب</th><th>السعر</th></tr>
        </thead>
        <tbody>
          <tr><td>قهوة عربية</td><td>15 ج.م</td></tr>
          <tr><td>كابتشينو</td><td>25 ج.م</td></tr>
        </tbody>
      </table>

      <!-- 7. صورة موصّفة بـ figure: درس 19 -->
      <figure>
        <img src="latte.jpg" alt="كوب لاتيه مع رسمة قلب بالحليب" width="260" height="180">
        <figcaption>أشهى أنواع اللاتيه عندنا</figcaption>
      </figure>
    </section>

    <!-- 8. فورم تواصل: درس 16 و17 -->
    <section id="contact">
      <h2>احجز طاولتك</h2>
      <form>
        <fieldset>
          <legend>بيانات الحجز</legend>
          <label for="name">الاسم</label>
          <input type="text" id="name" name="name" required>
          <label for="people">عدد الأفراد</label>
          <select id="people" name="people">
            <option>2</option>
            <option selected>4</option>
          </select>
          <button type="submit">تأكيد الحجز</button>
        </fieldset>
      </form>
    </section>
  </main>

  <!-- 9. footer ببريد التواصل: درس 8 و13 -->
  <footer>
    <p>راسلنا: <a href="mailto:hello@cafe.com">hello@cafe.com</a></p>
  </footer>

  <!-- 10. ربط JavaScript قبل إغلاق body: درس 14 -->
  <script src="app.js"></script>
</body>
</html>
  • لاحظ كل تعليق <!-- ... --> فوق كل جزء — يربط الكود مباشرة بالدرس الذي تعلمت فيه هذا الوسم، حتى تراجع أي نقطة غامضة بسهولة.
  • الصفحة تستخدم وسومًا دلالية كاملة (header, nav, main, section, footer) بدل الاعتماد على div فقط، تمامًا كما تعلمنا في درس الحاويات ودرس Block/Inline.
  • جرّب نسخ هذا الكود في ملف cafe.html على جهازك وشغّله، ثم عدّل الألوان والنصوص والصور لتُصبح صفحتك الخاصة بمشروعك المفضّل (مطعم، متجر، أو أي فكرة تحبها).
🏆
وبكده تكون خلّصت الـ 3 مشاريع المحلولة. أن تصل إلى مرحلة تقرأ فيها أي كود HTML وتفهم كل سطر فيه فورًا، وتقدر تبني صفحة كاملة بنفسك من الصفر بثقة، هو الهدف النهائي من هذه المذكرة.