تخطَّ إلى المحتوى

box-sizing

خاصية حساب أبعاد الصندوق box-sizing

خاصية box-sizing: border-box تجعل width شاملة للحشوة والحدود — السطر الذي يبدأ به كل مشروع CSS عاقل.

افتراضي CSS التاريخي (content-box) يحسب width للمحتوى وحده، ثم يضيف padding وborder فوقها — فيصبح صندوق width:200px مع padding:20px عرضه الفعلي 240px وتنهار حساباتك. border-box يقلب المعادلة للبدهي: العرض المعلن هو النهائي شاملًا كل شيء، والمحتوى ينكمش داخله.

لهذا أول سطر في globals كل مشروع حديث (وTailwind وأطر الواجهات كلها تطبقه): التطبيع الشامل على كل العناصر.

الصياغة

*, *::before, *::after {
  box-sizing: border-box; /* سطر بداية كل مشروع */
}

⚡ جرّب بنفسك

عدّل الكود واضغط «تحديث» لترى النتيجة فورًا — التجربة أفضل معلّم.

🎨 محرّر HTML/CSS
<style>
  .cb, .bb { width: 200px; padding: 20px; border: 4px solid #7c5cff; background: #ede9fe; border-radius: 8px; margin-bottom: 8px; }
  .bb { box-sizing: border-box; }
  .cb { box-sizing: content-box; }
</style>
<div class="cb">content-box: أنا أعرض من 200px فعليًا (248px!)</div>
<div class="bb">border-box: أنا 200px بالضبط كما وعدت</div>
النتيجة المباشرة:

أهم القيم

القيمةالوظيفة
border-boxالعرض المعلن نهائي شامل الحشوة والحدود — الصواب دائمًا
content-boxالافتراضي التاريخي: العرض للمحتوى فقط — مصدر المفاجآت

💡 نصائح عملية

  • لا تناقش: التطبيع الشامل border-box أول كل مشروع، وانسَ الموضوع للأبد
  • عمودان 50% + padding يفيضان عن أبيهما؟ هذه بصمة content-box الكلاسيكية

⚠️ أخطاء شائعة

  • نسيان التطبيع ثم مطاردة «لماذا أعرض من المطلوب؟» عنصرًا عنصرًا
  • خلط الوضعين بنفس الواجهة — حسابات ذهنية مزدوجة بلا داعٍ

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSS الكامل بالعربي.

📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs