اختصار border
ترسم border خطًا حول العنصر، بين حشوه وهامشه. يقبل الاختصار ثلاثة أجزاء بأي ترتيب: العرض والنمط واللون.
| الجزء | الخاصية المفصلة | القيم | الافتراضي |
|---|---|---|---|
| العرض | border-width | 1px، 0.2em، thin، medium، thick | medium |
| النمط | border-style | solid، dashed، dotted، double، وغيرها | none |
| اللون | border-color | أي لون | currentColor (لون النص) |
النمط هو الجزء الذي لا يمكنك تخطيه. قيمته الافتراضية none، لذلك لا يرسم border: 2px #2563eb; شيئًا على الإطلاق. وإن تركت اللون، يأخذ الحد لون نص العنصر.
أنماط الحدود
يحتاج double إلى 3px على الأقل كي يظهر خطان. تظلّل groove وridge وinset وoutset اللون ليبدو ثلاثي الأبعاد، وتختلف قليلًا بين المتصفحات. يبدو hidden مثل none؛ ولا يختلفان إلا داخل الجداول ذات الحدود المدمجة، وهو ما تشرحه صفحة حدود الجداول في HTML.
جانب واحد في كل مرة
لكل جانب اختصاره (border-top وborder-right وborder-bottom وborder-left)، ولكل جزء خصائص مفصلة لكل جانب مثل border-top-color. والنسخ المنطقية، border-inline-start وborder-block-end، تتبع اتجاه النص (في صفحة عربية تكون البداية على اليمين):
تقبل border-color وborder-width وborder-style من قيمة إلى أربع قيم بترتيب عقارب الساعة نفسه الذي في padding: الأعلى، اليمين، الأسفل، اليسار.
الزوايا المستديرة بـ border-radius
تدوّر border-radius زوايا الحد والخلفية، لذلك تعمل على العناصر التي لا حد لها أصلًا.
| القيمة | النتيجة |
|---|---|
border-radius: 8px | كل الزوايا مستديرة بمقدار 8px |
border-radius: 50% | دائرة على عنصر مربع، وشكل بيضاوي على مستطيل |
border-radius: 999px | كبسولة: يصبح الضلعان القصيران نصفي دائرة كاملين |
border-radius: 8px 0 | الزاويتان العلوية اليسرى والسفلية اليمنى 8px، والأخريان مربعتان |
border-top-left-radius: 12px | زاوية واحدة فقط |
border-radius: 50% / 25% | زوايا بيضاوية: نصف القطر الأفقي / نصف القطر العمودي |
قد يبرز ابن له خلفية خارج زوايا أبيه المستديرة. overflow: hidden على الأب تقصّه على المنحنى.
الفرق بين border وoutline
الإطار الخارجي outline يشبه الحد لكنه يُرسم خارجه ولا يشغل مساحة، فإضافته لا تحرّك شيئًا أبدًا. لهذا تستخدم المتصفحات الإطار الخارجي لحلقات التركيز.
| الحد border | الإطار الخارجي outline | |
|---|---|---|
| يشغل مساحة | نعم، جزء من حجم الصندوق | لا |
| لكل جانب | نعم (border-top، ...) | لا، حول العنصر كله |
يتبع border-radius | نعم | نعم، في المتصفحات الحالية |
| إزاحة عن الصندوق | لا | نعم، outline-offset |
| الاستخدام المعتاد | التصميم | مؤشرات التركيز، وتصحيح الأخطاء |
أخطاء شائعة
- لا نمط للحد.
border: 1px #111827;وborder-color: red;لا يرسمان شيئًا. أضفsolid(أو نمطًا آخر). - حد يجعل التخطيط يقفز عند التمرير. احجز المساحة بحد شفاف، أو استخدم outline أو
box-shadow. - نسيان الحد في حساب العرض. العنصر
width: 100%مع حد يتجاوز حاويته تحتcontent-box. استخدمbox-sizing: border-box. border-radiusمع ابن يبرز من الزوايا. أضفoverflow: hiddenإلى الأب المستدير.- إزالة إطارات التركيز بـ
outline: none. مستخدمو لوحة المفاتيح يحتاجونها؛ أعد تنسيق الإطار بدل حذفه.
الأسئلة الشائعة
كيف أضيف حدًا في CSS؟
استخدم الاختصار مع عرض ونمط ولون: border: 2px solid #2563eb;. النمط هو الجزء الأهم: من دونه يكون نمط الحد none ولا يُرسم أي حد.
لماذا لا يظهر الحد border عندي؟
في الغالب لأنه لم يُضبط نمط للحد. border: 2px #2563eb; أو border-color: red; وحدهما لا يرسمان شيئًا، لأن border-style الافتراضي هو none. أضف solid أو dashed أو نمطًا آخر.
كيف أصنع زوايا مستديرة في CSS؟
استخدم border-radius: border-radius: 8px; تدوّر الزوايا الأربع. وborder-radius: 50%; على مربع تصنع دائرة، وقيمة كبيرة مثل 999px تصنع شكل الكبسولة. وتدوّر الخلفية أيضًا، حتى من دون حد.
كيف أضيف حدًا إلى جانب واحد فقط؟
استخدم خاصية الجانب: border-bottom: 2px solid #e5e7eb;، أو border-inline-start للجانب الذي يبدأ منه النص، وهي تعمل أيضًا مع اللغات التي تُكتب من اليمين إلى اليسار (في العربية تكون البداية على اليمين).
ما الفرق بين border وoutline؟
الحد جزء من الصندوق: يشغل مساحة ويغيّر حجم العنصر. أما الإطار الخارجي outline فيُرسم خارج الحد من دون أن يشغل مساحة، ولا يمكن ضبطه لكل جانب، وهو ما تستخدمه المتصفحات لحلقات التركيز. كلاهما يتبع border-radius في المتصفحات الحالية.