طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 131 · تقنيات تطوير الواجهات الأمامية
الدرس 19 · الوحدة 6: تنسيق صفحات الويب باستخدام CSS

نموذج الصندوق

نفهم كيف يرى المتصفح كل عنصر صندوقًا، وكيف نتحكم في مسافاته. ⏱ نحو 25 دقيقة.

المحتوىpadding الحشوةmargin الهامشborder الحد
بعد هذا الدرس ستستطيع أن:
  • تصف طبقات الصندوق: المحتوى والحشوة والحد والهامش.
  • تكتب القيم المختصرة للاتجاهات.
  • تستخدم box-sizing: border-box لحساب العرض بسهولة.
  • توسّط صندوقًا، وتفرّق بين block و inline و inline-block.

١كل عنصر صندوق

المتصفح يرى كل عنصر في الصفحة صندوقًا مستطيلًا، حتى لو بدا دائريًّا. ولكل صندوق أربع طبقات من الداخل إلى الخارج:

الطبقةالخاصيةتشبيهها: صورة في برواز على الجدار
المحتوىwidth و heightالصورة نفسها.
الحشوةpaddingالورق الأبيض حول الصورة داخل البرواز.
الحدborderخشب البرواز.
الهامشmarginالمسافة بين البرواز والبراويز الأخرى.
<div class="box">محتوى الصندوق</div><div class="box">صندوق ثانٍ</div>
index.html

لاحظ: الخلفية تملأ المحتوى والحشوة، ولا تمتد إلى الهامش. والهامش مسافة شفافة خارج الحد.

٢قيم الاتجاهات

للحشوة والهامش أربعة اتجاهات، ونكتبها بطرق مختصرة:

الكتابةمعناها
padding: 20px;20 من الجهات الأربع.
padding: 10px 20px;10 أعلى وأسفل، و 20 يمين ويسار.
padding: 5px 10px 15px 20px;أعلى، ثم يمين، ثم أسفل، ثم يسار (مثل عقارب الساعة).
margin-top: 30px;جهة واحدة فقط: top أو right أو bottom أو left.

والحد يُكتب في سطر واحد: السُّمك ثم النوع ثم اللون: border: 2px solid gray;. وأنواعه: solid متصل، و dashed متقطع، و dotted منقّط.

٣مشكلة العرض، وحلّها box-sizing

في المثال الأول كتبنا العرض 200px، لكن الصندوق ظهر أعرض! لأن المتصفح يضيف الحشوة والحد إلى العرض: 200 + 20 + 20 + 4 + 4 = 248. الحل سطر واحد يجعل العرض يشمل الحشوة والحد:

<div class="a">بلا border-box</div><div class="b">مع border-box</div>
index.html

لذلك يبدأ أغلب المطوّرين ملف CSS بهذه القاعدة لكل العناصر: * { box-sizing: border-box; }. والنجمة * محدِّد يختار كل العناصر.

٤التوسيط والكتلة والسطر

<div class="card">بطاقة في الوسط</div><p>رابط <a href="#">سطري</a> و <span class="tag">وسم</span> داخل الفقرة.</p>
index.html
المعنى
margin: 20px auto;20 أعلى وأسفل، و auto يمينًا ويسارًا: يقسّم المسافة بالتساوي فيتوسط الصندوق. يحتاج عرضًا محددًا.
display: blockيبدأ في سطر جديد ويأخذ العرض كله (div و p و h1).
display: inlineداخل السطر، ولا يقبل width ولا padding رأسية كاملة (a و span).
display: inline-blockداخل السطر لكنه يقبل العرض والحشوة. مناسب للأزرار والوسوم الصغيرة.

٥أداة المطوّر: شاهد الصناديق

  1. في صفحتك (Chrome أو Edge) اضغط بالزر الأيمن على أي عنصر، ثم فحص Inspect (أو F12).
  2. في لوحة Styles ترى قواعد CSS المطبقة على العنصر، ويمكنك تعديلها مؤقتًا.
  3. في لوحة Computed يظهر رسم نموذج الصندوق بأرقام: المحتوى والحشوة والحد والهامش.
  4. هذه الأداة أهم صديق لمطوّر الواجهات عند البحث عن سبب مسافة غريبة.

توقّع وتحقّق

المسافة بين النص وحد الصندوق:

الحشوة داخل الحد.

المسافة بين صندوقين متجاورين:

الهامش خارج الحد.

صندوق width: 100px و padding: 10px و border: 0، كم عرضه الكلي دون border-box؟

100 + 10 + 10.

توسيط صندوق عرضه 300px:

الهامش التلقائي يمينًا ويسارًا.

الخلاصة

تحدٍّ برمجي: بطاقة في وسط الصفحة

متوسط

نسّق بطاقة تسجيل في وسط الصفحة بنموذج الصندوق.

المطلوب:
  • كل العناصر box-sizing: border-box.
  • البطاقة .card عرضها 320px وفي وسط الصفحة أفقيًّا.
  • حشوة البطاقة 24px من كل الجهات.
  • حد البطاقة 2px متصل solid بلون #1D5FB4.
  • الزر .btn من نوع inline-block وحشوته 10px أعلى وأسفل و 24px يمينًا ويسارًا.
👀 اعرض شكل الناتج المطلوب
الناتج المطلوب
✓ التحقق الآلي من حلّك:
  • box-sizing: border-box للعناصر.
  • عرض البطاقة 320px.
  • البطاقة في الوسط أفقيًّا.
  • حشوة البطاقة 24px من كل الجهات.
  • حد البطاقة 2px solid #1D5FB4.
  • الزر inline-block بحشوة 10px و 24px.

💡 تلميح 1
* { box-sizing: border-box; }
💡 تلميح 2
التوسيط: margin: 30px auto; مع width.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

<div class="card">  <h2>انضم إلينا</h2>  <p>سجّل الآن في دورة تطوير الويب.</p>  <a class="btn" href="#">سجّل</a></div>
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←