انتقل إلى المحتوى

القوائم والجداول في HTML: شرح ul وol وdl وtable وth وcaption وscope

القوائم والجداول تنظّم المعلومات ليتمكن الناس من تصفحها بسرعة. فالقائمة تقول "هذه العناصر مترابطة"، والجدول يقول "كل قيمة تنتمي إلى صف وعمود". وكلاهما يحمل معنى تعلنه قارئات الشاشة، مثل "قائمة من 5 عناصر" أو "الصف 2، عمود السعر"، ولهذا لا يجوز تقليدهما بالأسطر الجديدة أو المسافات.

الإجابة المختصرة

استخدم <ul> لعناصر بأي ترتيب، و<ol> عندما يهم الترتيب (الخطوات والتصنيفات)، و<dl> لأزواج المصطلح والوصف، وكل عنصر في ul وol هو <li>. واستخدم <table> فقط للبيانات ذات الصفوف والأعمدة، مع <caption> وخلايا العناوين <th> والسمة scope لتحدد هل يعنون العنوان عموداً أم صفاً.

20 دقيقة للقراءة والتمرين · روجع المحتوى في 20 أكتوبر 2026

في هذا الدرس سوف

  • تختار نوع القائمة المناسب للمحتوى
  • تبني جدول بيانات بعناوين تفهمها قارئات الشاشة
  • تعرف متى يكون الجدول أداة خاطئة

ثلاثة أنواع من القوائم

القائمة غير المرتبة <ul> للعناصر التي لا يغيّر ترتيبها المعنى، مثل الميزات أو المكونات. والقائمة المرتبة <ol> للخطوات أو التصنيفات أو أي شيء يهم فيه الموضع، والمتصفح يرقّمها لك. وكل عنصر في أي منهما هو <li>، ولا يمكن أن يكون الأبناء المباشرون لـ ul وol إلا عناصر <li>.

وللعنصر <ol> سمات مفيدة: start="5" يبدأ العدّ من 5، وreversed يعدّ تنازلياً، وtype="a" أو type="i" يستخدم الأحرف أو الأرقام الرومانية. ويمكن تداخل القوائم: ضع <ul> جديدة كاملة داخل <li>، وليس مباشرة داخل القائمة الأم.

وقائمة الوصف <dl> تقرن المصطلحات بأوصافها: <dt> هو المصطلح و<dd> وصفه. وهي مناسبة لمسارد المصطلحات والأسئلة الشائعة وتفاصيل المفتاح والقيمة مثل "ساعات العمل: من 9 إلى 5".

جرّبه: ul وol مع التداخل، وdl
الشيفرة
النتيجةتتحدث أثناء الكتابة
وحدة التحكم
  1. تظهر هنا رسائل وحدة التحكم والأخطاء وبيانات النماذج والروابط التي تنقرها.

أضف start="3" إلى ol وراقب تغيّر الأرقام.

بناء جدول بيانات

يُبنى الجدول من صفوف (<tr>) من الخلايا. خلايا البيانات <td>، وخلايا العناوين <th>. اجمع صف العناوين في <thead> وصفوف البيانات في <tbody>، وأضف <tfoot> للمجاميع. وتساعد هذه المجموعات قارئات الشاشة والطباعة (تتكرر العناوين في كل صفحة) والتنسيق.

يجب أن يكون <caption> أول شيء داخل <table>، فهو عنوان الجدول، وتعلنه قارئات الشاشة عندما يصل المستخدم إلى الجدول. وتعني scope="col" على th أنه يعنون عموداً، وscope="row" أنه يعنون صفاً. وبهما تستطيع قارئة الشاشة أن تقول "السعر، 25 درهماً" أثناء تنقل المستخدم بين الخلايا.

ويمكن للخلية أن تمتد على عدة أعمدة باستخدام colspan="2" أو عدة صفوف باستخدام rowspan="2". استخدم الامتداد بحذر، فالجداول المعقدة ذات الخلايا المدمجة صعبة القراءة على الجميع، وغالباً ما يكون تقسيمها إلى جدولين بسيطين أفضل.

جرّبه: جدول أسعار سهل الوصول
الشيفرة
النتيجةتتحدث أثناء الكتابة
وحدة التحكم
  1. تظهر هنا رسائل وحدة التحكم والأخطاء وبيانات النماذج والروابط التي تنقرها.

الأجور أرقام افتراضية للتمرين وليست أسعاراً رسمية. والسمتان border وcellpadding سمات تنسيق قديمة استُخدمت هنا فقط لإظهار الشبكة، وفي الصفحات الحقيقية استخدم CSS.

متى لا تستخدم الجدول

قبل سنوات كانت تخطيطات الصفحات كاملة تُبنى بالجداول. لا تفعل ذلك، فقارئات الشاشة تعلن كل صف وعمود، والتخطيط لا يتكيف مع الهواتف، والشيفرة صعبة التعديل. استخدم CSS Grid أو Flexbox للتخطيط، وستتعلمهما في دورة CSS. فالجداول للبيانات التي قد تضعها في جدول بيانات إلكتروني.

والجداول العريضة تتجاوز الشاشات الصغيرة. والحل البسيط أن تضع الجدول داخل حاوية تتمرر أفقياً (overflow-x: auto في CSS) حتى لا تتمرر الصفحة نفسها أفقياً.

أخطاء شائعة

  • نص مباشر داخل ul أو ol

    <ul>Item</ul> أو وضع <ul> متداخلة مباشرة داخل <ul> غير صحيح. كل شيء يجب أن يكون داخل عناصر <li>.

  • خلية td عريضة بدلاً من th

    جعل الصف الأول عريضاً بـ CSS لا يجعله عنواناً. استخدم <th> مع scope لتعرف التقنيات المساعدة أي الخلايا عناوين.

  • ترقيم الخطوات يدوياً

    كتابة "1." و"2." في الفقرات تعني إعادة الترقيم يدوياً كلما تغيّرت خطوة. أما <ol> فيرقّم تلقائياً ويخبر قارئات الشاشة بعدد الخطوات.

تمرين

ابنِ جدولاً أسبوعياً: table فيه caption، وصف عناوين داخل thead فيه خليتان th scope="col" على الأقل، وصفان على الأقل داخل tbody. وتحته أضف قائمة مرتبة من ثلاث خطوات دراسية على الأقل.

الشيفرة
النتيجةتتحدث أثناء الكتابة
وحدة التحكم
  1. تظهر هنا رسائل وحدة التحكم والأخطاء وبيانات النماذج والروابط التي تنقرها.
  • الجدول فيه caption
  • خليتان th scope="col" على الأقل داخل thead
  • صفان على الأقل داخل tbody
  • قائمة مرتبة من ثلاثة عناصر على الأقل
اعرض حلاً ممكناً
<table>
  <caption>My study week</caption>
  <thead>
    <tr>
      <th scope="col">Day</th>
      <th scope="col">Subject</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sunday</td>
      <td>HTML</td>
    </tr>
    <tr>
      <td>Monday</td>
      <td>CSS</td>
    </tr>
  </tbody>
</table>

<ol>
  <li>Read the lesson</li>
  <li>Do the exercise</li>
  <li>Take the quiz</li>
</ol>

اختبار سريع

  1. 1. أي قائمة تناسب "كيف تجدد جواز سفرك في 4 خطوات"؟
  2. 2. أين يجب أن يوضع <caption>؟
  3. 3. ماذا تعني scope="row" على th؟
  4. 4. تريد عمودين متجاورين في صفحة. ماذا تستخدم؟
أجب عن كل الأسئلة لتتحقق.

أنهيت الدرس؟

أسئلة يطرحها الناس

هل يمكنني تغيير شكل نقاط القائمة؟

نعم، باستخدام CSS: تحدد list-style-type الدوائر أو المربعات أو الأرقام أو لا شيء، ويُنسّق ::marker النقطة نفسها. واحتفظ بالعنصر ul أو ol في كل الأحوال، لأن المعنى يبقى نفسه.

هل ترقّم الصفحات العربية القوائم من اليمين إلى اليسار؟

مع dir="rtl" تنتقل النقاط والأرقام إلى الجهة اليمنى تلقائياً. وتبقى الأرقام بالأرقام الغربية ما لم تحدد list-style-type: arabic-indic في CSS.

هل يجوز استخدام جدول لتقويم؟

نعم. فتقويم الشهر بيانات جدولية حقيقية: أيام الأسبوع عناوين أعمدة وكل أسبوع صف.

كيف أجعل الجدول قابلاً للفرز؟

لا تستطيع HTML وحدها الفرز. تضيف دالة JavaScript صغيرة تعيد ترتيب الصفوف عند الضغط على زر في العنوان، وتغطي دورة JavaScript ذلك. أبقِ العناوين بصيغة <th> وضع داخلها <button>.

ما الفرق بين thead وth؟

<thead> يجمع صفوف العناوين في الجدول. أما <th> فخلية عنوان واحدة ويمكن أن تظهر في أي مكان، مثل أول خلية في كل صف من صفوف الجسم.

المصادر

روجعت المعلومات في هذا الدرس وفق هذه الصفحات الرسمية بتاريخ 20 أكتوبر 2026.

تبقى أمثلة الشيفرة بالإنجليزية وتعمل في بيئة معزولة على جهازك. والنص العربي بانتظار المراجعة من متحدث أصلي. وإذا لاحظت خطأ فأخبرنا عبر صفحة التواصل.