Menu
flag Ar iconالعربيةdown icon

حدود الجدول في HTML: border-collapse والخطوط والزوايا

كيف تضيف حدودًا إلى جدول HTML بـ CSS: خطوط مفردة بـ border-collapse، وborder-spacing، وخطوط الصفوف فقط، والحدود الداخلية فقط، والزوايا المستديرة، ولماذا السمة border مهجورة.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تضيف حدودًا إلى جدول

الجداول بلا حدود افتراضيًا. أضفها بـ CSS: border على كل خلية يرسم الشبكة، وborder-collapse: collapse على الجدول تدمج كل حدين متجاورين في خط واحد.

الصيغة المختصرة border تأخذ عرضًا ونمطًا ولونًا بأي ترتيب: 1px solid #6b7280. ضعها على th, td، لا على table وحده: فالحد على الجدول يرسم الإطار الخارجي فقط.

الفرق بين border-collapse: separate وcollapse

border-collapse تحدد إن كانت الخلايا تتشارك الحدود.

القيمةالنتيجة
separate (الافتراضية)لكل خلية حدها الخاص، مع فجوة بين الخلايا تحددها border-spacing
collapseالخلايا المتجاورة تتشارك حدًا واحدًا، ويتم تجاهل border-spacing

في الجدول المنفصل ترى الطبقتين: إطار الجدول الأزرق وصندوقًا كهرمانيًا منفصلًا حول كل خلية، مع border-spacing بينهما. غيّر 6px إلى 0 وستتلامس الخلايا لكن الخطوط تبقى مزدوجة. وحدها collapse تدمجها.

عندما يلتقي حدّان مدمجان مختلفان، يفوز الأعرض. وعند تساوي العرض يحسم النمط (double يتغلب على solid، الذي يتغلب على dashed وdotted)، وعند التعادل يتغلب حد الخلية على حد الصف، الذي يتغلب على حد الجدول. ولهذا فالحافة الخارجية للجدول المدمج كهرمانية لا زرقاء: للخلايا وللجدول كليهما حدود solid بعرض 2px هناك، والخلايا تفوز.

خطوط أفقية فقط، أو خطوط داخلية فقط

معظم الجداول الحديثة لا ترسم كل الخطوط. نمطان شائعان:

الجدول الثاني يزيل الحد في الجهة الخارجية من كل خلية طرفية. border-inline-start وborder-inline-end تعنيان بداية الصف ونهايته، فتبقى CSS نفسها صحيحة في اللغات المكتوبة من اليمين إلى اليسار، حيث تكون الخلية الأولى في الجهة الأخرى.

زوايا الجدول المستديرة

border-radius لا تفعل شيئًا على جدول يحمل border-collapse: collapse. الجداول المستديرة تستخدم النموذج المنفصل بلا تباعد، وترسم كل خط مرة واحدة بإعطاء الخلايا حدًا سفليًا وحدًا في النهاية فقط:

خليتا الزاويتين في الرأس تحصلان على نصف قطر خاص بهما كي تتبع الخلفية الرمادية الانحناء. من دونه تبرز زواياهما المربعة خارج الحد المستدير. نصف القطر 9px، أي 10px للجدول ناقص حده البالغ 1px، فيتطابق المنحنيان.

لون الحد وسماكته لكل جزء

يمكن أن تختلف الحدود بحسب أجزاء الجدول. المحددات على thead وtfoot والصفوف المفردة تضع خطًا أثقل تحت الرأس أو فوق المجاميع:

الخطوط بعرض 3px تتغلب على الخطوط الرمادية بعرض 1px حيث تلتقي، وفقًا لقواعد الدمج أعلاه. لبقية بنية الجدول (thead وtfoot وth)، راجع الجداول في HTML.

السمة border

الدروس القديمة تستخدم سمات على الوسم <table>:

<table border="1" cellspacing="0" cellpadding="6">

ما زالت المتصفحات تحترم border="1": ترسم حدًا على الجدول وكل خلية في النموذج المنفصل، فيظهر الشكل المزدوج. السمات الثلاث مهجورة في HTML5. ما يقابلها في CSS هو border على الخلايا، وborder-spacing (أو border-collapse: collapse) على الجدول، وpadding على الخلايا.

أخطاء شائعة

  • حد على table وحده. تحصل على إطار بلا خطوط داخلية. أضف الحد إلى th, td.
  • نسيان border-collapse: collapse، ثم ظهور خطوط مزدوجة.
  • border-radius مع border-collapse: collapse. يتم تجاهل نصف القطر.
  • border-spacing مع border-collapse: collapse. التباعد يعمل في النموذج المنفصل فقط.
  • حدود على <tr> في النموذج المنفصل. الصفوف لا ترسم حدودًا إلا إذا كان الجدول مدمجًا، فنسّق الخلايا بدلًا منها.
  • استخدام border="1" في شيفرة جديدة. ما زال يعمل، لكنه لا يحدد لونًا وهو مهجور.

الأسئلة الشائعة

كيف أضيف حدودًا إلى جدول في HTML؟

استخدم CSS على الجدول وخلاياه: table { border-collapse: collapse; } th, td { border: 1px solid #999; }. الحد على الخلايا يرسم الشبكة، وborder-collapse: collapse تدمج الحدود المتجاورة في خطوط مفردة.

لماذا تظهر حدود مزدوجة في الجدول؟

افتراضيًا ترسم كل خلية حدها الخاص مع فجوة بين الخلايا (border-collapse: separate)، فتُظهر الخلايا المتجاورة خطين. اضبط border-collapse: collapse على <table> لدمجهما في خط واحد.

هل ما زالت سمة border في الجدول صالحة؟

<table border="1"> ما زال يرسم الحدود في كل المتصفحات، لكنه مهجور في HTML5 ولا يمنحك أي تحكم في اللون أو النمط. استخدم خاصية CSS border بدلًا منه.

كيف أجعل زوايا الجدول مستديرة؟

لا أثر لـ border-radius على جدول يحمل border-collapse: collapse. استخدم border-collapse: separate مع border-spacing: 0، وضع نصف القطر على الجدول، وأعطِ خلايا الزوايا نصف قطر مطابقًا (border-start-start-radius وأخواتها) كي لا تبرز خلفياتها من الزوايا.

كيف أزيل الحدود من الجدول؟

الجداول بلا حدود ما لم يُضفها شيء. احذف السمة border من الوسم <table>، أو اضبط border: none على table, th, td لتتجاوز ملف تنسيق يضيفها.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن