| الوسم/العنصر | الموقع | الوظيفة | إلزامي؟ |
|---|---|---|---|
| <!DOCTYPE html> | السطر الأول دائماً | إخبار المتصفح بمعيار HTML5 | نعم |
| <html> | يُحيط بكل شيء | جذر المستند — يحتوي head و body | نعم |
| lang="ar" | داخل <html> | تحديد لغة الصفحة للمتصفح ومحركات البحث | موصى به |
| dir="rtl" | داخل <html> | ضبط اتجاه النص يميناً لليسار (ضروري للعربية) | للصفحات العربية |
| <head> | داخل <html> | يحتوي البيانات الوصفية — لا يظهر في الصفحة | نعم |
| <meta charset> | داخل <head> | تحديد ترميز النص (UTF-8 لدعم العربية) | موصى به |
| <meta viewport> | داخل <head> | ضبط العرض على الجوال والشاشات المختلفة | ضروري للجوال |
| <title> | داخل <head> | عنوان الصفحة في تبويب المتصفح ونتائج البحث | نعم |
| <meta description> | داخل <head> | وصف الصفحة في نتائج محركات البحث | موصى به للـ SEO |
| <link> | داخل <head> | ربط ملفات CSS الخارجية والأيقونات وغيرها | حسب الحاجة |
| <body> | داخل <html> بعد head | يحتوي كل المحتوى المرئي في الصفحة | نعم |
| <script> | آخر body أو head | ربط ملفات JavaScript أو كتابتها مباشرة | حسب الحاجة |
كل ملف HTML صحيح يجب أن يتبع هيكلاً محدداً — هذا الهيكل ليس اختيارياً بل هو معيار دولي تفرضه مواصفات HTML5. المتصفحات تتوقع هذا الهيكل وقد تُعطي نتائج غير متوقعة إذا غاب.
السطر الأول دائماً: !DOCTYPE html — هذا الإعلان يخبر المتصفح أن الملف يتبع معيار HTML5 وليس إصداراً قديماً. لاحظ أنه ليس وسماً (Tag) بل إعلان خاص (Declaration). في الإصدارات القديمة كان هذا الإعلان أطول وأعقد، أما HTML5 فبسّطه لحرف واحد قصير.
وسم html: هو الجذر (Root) الذي يحتوي كل شيء آخر. الخاصية lang تحدد لغة الصفحة (ar للعربية، en للإنجليزية) وهي مهمة لمحركات البحث وقارئات الشاشة. الخاصية dir="rtl" تضبط اتجاه النص من اليمين لليسار وهي ضرورية للصفحات العربية.
وسم head: هو "رأس" الوثيقة ويحتوي المعلومات الوصفية (Metadata) التي لا تظهر للمستخدم مباشرةً لكنها مهمة جداً — مثل عنوان الصفحة الذي يظهر في تبويب المتصفح، ترميز النص، وصف الصفحة لمحركات البحث، وروابط ملفات CSS وJavaScript الخارجية.
وسم body: هو "جسم" الوثيقة ويحتوي كل شيء يظهر للمستخدم في نافذة المتصفح — النصوص، الصور، الروابط، الأزرار، وكل المحتوى المرئي. هذا هو المكان الذي تقضي فيه معظم وقتك كمطور.
التداخل (Nesting): عناصر HTML تتداخل داخل بعضها كأوعية — كل عنصر يجب أن يُفتح ويُغلق بالترتيب الصحيح. مثلاً لا يمكن إغلاق الـ body قبل إغلاق كل عناصره الداخلية. هذا التداخل المنظم هو ما يُشكّل شجرة DOM.
خاصية charset="UTF-8": هذه الخاصية في وسم meta تُخبر المتصفح بكيفية قراءة وعرض النصوص. UTF-8 هو الترميز الأشمل الذي يدعم اللغة العربية والصينية واليابانية وجميع رموز العالم. إذا نسيتها ستظهر الحروف العربية مشوّهة ومكسّرة.
| 1 | <!DOCTYPE html> |
| 2 | <html lang="ar" dir="rtl"> |
| 3 | |
| 4 | <head> |
| 5 | <!-- معلومات الصفحة الوصفية (لا تظهر للمستخدم) --> |
| 6 | <meta charset="UTF-8" /> |
| 7 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| 8 | <title>عنوان الصفحة — يظهر في تبويب المتصفح</title> |
| 9 | <meta name="description" content="وصف الصفحة لمحركات البحث" /> |
| 10 | <!-- ملف CSS الخارجي --> |
| 11 | <link rel="stylesheet" href="style.css" /> |
| 12 | </head> |
| 13 | |
| 14 | <body> |
| 15 | <!-- كل المحتوى المرئي يوضع هنا --> |
| 16 | <h1>هذا يظهر في الصفحة</h1> |
| 17 | <p>هذه فقرة نصية مرئية للمستخدم</p> |
| 18 | <!-- ملف JS الخارجي — يُوضع في نهاية body لأداء أفضل --> |
| 19 | <script src="script.js"></script> |
| 20 | </body> |
| 21 | |
| 22 | </html> |
مثال 1: مستند HTML5 كامل ومتكامل
| 1 | <!DOCTYPE html> |
| 2 | <html lang="ar" dir="rtl"> |
| 3 | <head> |
| 4 | <meta charset="UTF-8"> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | <meta name="description" content="موقعي الشخصي — مطور ويب متخصص في التقنيات الحديثة"> |
| 7 | <meta name="author" content="أحمد محمد"> |
| 8 | <title>أحمد محمد — مطور ويب</title> |
| 9 | <!-- رابط ملف التنسيق الخارجي --> |
| 10 | <link rel="stylesheet" href="style.css"> |
| 11 | <!-- أيقونة الموقع التي تظهر في التبويب --> |
| 12 | <link rel="icon" type="image/png" href="favicon.png"> |
| 13 | </head> |
| 14 | <body> |
| 15 | |
| 16 | <header> |
| 17 | <h1>أحمد محمد</h1> |
| 18 | <p>مطور ويب ومتخصص في React و Node.js</p> |
| 19 | </header> |
| 20 | |
| 21 | <main> |
| 22 | <section> |
| 23 | <h2>من أنا؟</h2> |
| 24 | <p>مطور شغوف بتطوير تجارب مستخدم رائعة باستخدام أحدث التقنيات.</p> |
| 25 | </section> |
| 26 | </main> |
| 27 | |
| 28 | <footer> |
| 29 | <p>جميع الحقوق محفوظة © 2025</p> |
| 30 | </footer> |
| 31 | |
| 32 | <!-- JavaScript في نهاية body لتحميل المحتوى أولاً --> |
| 33 | <script src="script.js"></script> |
| 34 | </body> |
| 35 | </html> |
مثال 2: الفرق بين head و body — مثال توضيحي
| 1 | <!DOCTYPE html> |
| 2 | <html lang="ar" dir="rtl"> |
| 3 | <head> |
| 4 | <!-- ✅ يوضع في head: لا يظهر للمستخدم --> |
| 5 | <meta charset="UTF-8"> |
| 6 | <title>اسم الصفحة في التبويب</title> |
| 7 | <meta name="description" content="وصف لمحركات البحث فقط"> |
| 8 | <link rel="stylesheet" href="styles.css"> |
| 9 | </head> |
| 10 | <body> |
| 11 | <!-- ✅ يوضع في body: يظهر للمستخدم --> |
| 12 | <h1>هذا العنوان يظهر في الصفحة</h1> |
| 13 | <p>هذه الفقرة يراها الزوار</p> |
| 14 | <img src="image.jpg" alt="صورة"> |
| 15 | <a href="/about">معرفة المزيد</a> |
| 16 | </body> |
| 17 | </html> |