في بناء أي موقع ويب احترافي، الجداول والنماذج هما العنصران اللي بيخلّي الموقع "حي" ومتفاعل مع المستخدم. من خلال خبرتي في تطوير أكتر من 50 موقع، لاحظت إن 90% من المواقع الناجحة بتعتمد على نماذج التواصل والجداول في عرض البيانات.
في الدرس ده هنتعلم:
⚠️ نصيحة من خبرة: 40% من المستخدمين بيسيبوا النموذج لو كان معقد أو طويل. في الدرس ده هنتعلم نبني نماذج بسيطة وفعالة بتزود معدل الإكمال (Conversion Rate)!
الجداول في HTML مش بس للعرض — هي أداة قوية لتحسين SEO وتنظيم المحتوى. جوجل بتحب الجداول لأنها بتسهل على المستخدم فهم المقارنات والبيانات.
الجدول في HTML بيتكون من 3 أجزاء رئيسية: thead (الرأس), tbody (الجسم), tfoot (التذييل). الفصل ده بيساعد قارئات الشاشة (للمكفوفين) وفهرسة جوجل.
💡 لماذا scope="col/row" مهم؟ الخاصية دي بتقول للمتصفح والمكفوفين: "ده عنوان العمود" أو "ده عنوان الصف". ده بيحسن الوصولية (Accessibility) وبيخلي جوجل تفهم هيكل الجدول — وده بيحسن SEO!
| الوسم | الوظيفة | مثال عملي |
|---|---|---|
<table> |
الحاوية الرئيسية للجدول | يحتوي كل الوسوم التانية |
<caption> |
عنوان/وصف الجدول | "أسعار المنتجات" |
<thead> |
رأس الجدول (العناوين) | بتتكرر في كل صفحة عند الطباعة |
<tbody> |
جسم الجدول (البيانات) | المحتوى الفعلي |
<tfoot> |
تذييل الجدول (المجاميع) | "الإجمالي: 500 جنيه" |
<tr> |
صف (Table Row) | كل سطر في الجدول |
<th> |
خلية عنوان (Table Header) | عريضة ومركزية افتراضيًا |
<td> |
خلية بيانات (Table Data) | المحتوى العادي |
في كتير من الأحيان بنحتاج ندمج خلايا — زي عنوان رئيسي يغطي عمودين.
🌟 نصيحة عملية: استخدم colspan لعناوين فرعية، و rowspan لتجنب تكرار البيانات. بس متستخدمهوش كتير — الجداول المعقدة بتصعب على المكفوفين!
النماذج هي الواجهة بينك وبين زوار موقعك. سواء كان تسجيل دخول، نموذج تواصل، أو اشتراك نشرة بريدية — النموذج الصح بيحول زائر لعميل.
كل نموذج لازم يحتوي على 3 عناصر أساسية: الوسم <form>، الوسم <label>، والوسم <input>.
🔒 لماذا method="POST"؟ POST بيبعت البيانات في Body الطلب (مش في URL) — ده أمن للبيانات الحساسة زي كلمات المرور. GET بيبعت البيانات في URL ومناسب للبحث فقط.
HTML5 جاب معاه أنواع كتير من حقول الإدخال — كل نوع بيتحقق من البيانات تلقائيًا وبيظهر لوحة مفاتيح مناسبة في الموبايل.
| النوع | الوظيفة | التحقق التلقائي | لوحة المفاتيح في الموبايل |
|---|---|---|---|
text |
نص عادي | ❌ لا يوجد | عادية |
email |
بريد إلكتروني | ✅ يتحقق من @ و . | تظهر @ و .com |
password |
كلمة مرور مخفية | ❌ لا يوجد | عادية |
tel |
رقم هاتف | ❌ لا يوجد (لكن pattern يمكن استخدامه) | رقمية |
number |
أرقام فقط | ✅ يرفض الحروف | رقمية |
date |
تاريخ | ✅ يتحقق من صيغة التاريخ | تقويم منبثق |
url |
رابط موقع | ✅ يتحقق من http:// | تظهر / و . |
checkbox |
مربع اختيار (متعدد) | ❌ لا يوجد | عادية |
radio |
اختيار واحد فقط | ❌ لا يوجد | عادية |
🎯 pattern="[A-Za-z0-9_]+" ده بيستخدم Regular Expressions (Regex) للتحقق من إن الاسم يحتوي على حروف وأرقام وشرطات سفلية فقط. Regex أداة قوية جدًا — هنتعلمها بالتفصيل في مستوى JavaScript!
<label> مرتبط بـ for (للمكفوفين)requiredplaceholder توضيحي (مش بديل عن label)autocomplete مناسبnovalidate لو هتعمل validation بـ JavaScriptfieldset و legend لتجميع الحقول| الخطأ ❌ | الصح ✅ | السبب |
|---|---|---|
| حقل بدون label | <label for="id"> + <input id="id"> |
قارئات الشاشة مش هتعرف إيه الحقل ده |
| استخدام placeholder بدل label | label واضح + placeholder توضيحي | placeholder بيختفي لما تكتب — المستخدم ممكن ينسى |
| نوع text لكل الحقول | استخدام النوع المناسب (email, tel, number) | النوع الصح بيحسن UX وبيتحقق تلقائيًا |
| نموذج طويل بدون تقسيم | استخدام fieldset + legend | التقسيم بيخلي النموذج أسهل في الفهم والتنقل |
| زر submit بدون type | <button type="submit"> |
type="submit" بيضمن الإرسال الصحيح في كل المتصفحات |
طبق اللي اتعلمته في درس عملي. حاول تبني صفحة contact.html تحتوي على: