شرح padding في CSS

التباعد الداخلي للعناصر padding

هي المسافة التي تفصل "محتوى العنصر" (سواء كان نصاً أو صورة) عن "حدود العنصر" (Border). في هذا الدرس الضخم، سنتعلم كيف نتحكم في هذه المسافات بكل دقة واحترافية.

1. ما هو الـ Padding ببساطة؟

الـ Padding هو المساحة الموجودة داخل العنصر.

  • تخيل صندوقاً كرتونياً (Border).
  • بداخله هدية (Content).
  • الفلين أو الإسفنج الذي تضعه حول الهدية لحمايتها هو الـ Padding.

ملاحظة هامة جداً: لون الـ Padding هو نفسه لون خلفية العنصر (Background Color). إذا كانت خلفية الزر حمراء، فالـ Padding سيكون أحمر أيضاً.

2. التحكم في كل جهة بمفردها (الطريقة التفصيلية)

يمكنك التحكم في مساحة الحاشية لكل جهة من الجهات الأربع (فوق، يمين، تحت، يسار) بشكل مستقل تماماً.

الخصائص الأربع

  • padding-top: المسافة العلوية.
  • padding-right: المسافة اليمنى.
  • padding-bottom: المسافة السفلية.
  • padding-left: المسافة اليسرى.
مثال (1): تحديد الجهات يدوياً

.box {
    background-color: lightblue;
    border: 2px solid blue;
    
    /* أريد مسافة كبيرة من فوق، وصغيرة من الجوانب */
    padding-top: 50px;
    padding-right: 20px;
    padding-bottom: 50px;
    padding-left: 20px;
}

3. الاختصار السحري (The Shorthand Property)

بدلاً من كتابة 4 أسطر كود، يمكنك كتابة سطر واحد فقط باستخدام الخاصية padding. ولكن، طريقة قراءة القيم تعتمد على "كم رقم ستكتب".

تذكر دائماً: الترتيب يبدأ من الساعة 12 (فوق) ويدور مع عقارب الساعة (يمين، تحت، يسار).

أ. الحالة الأولى: 4 قيم (لكل الجهات)

الترتيب: فوق - يمين - تحت - يسار (Top Right Bottom Left).

padding: 10px 20px 30px 40px;

  • 10px (فوق)
  • 20px (يمين)
  • 30px (تحت)
  • 40px (يسار)

ب. الحالة الثانية: 3 قيم (نادراً ما تستخدم)

الترتيب: فوق - (يمين ويسار) - تحت.

padding: 10px 50px 20px;

  • 10px (فوق)
  • 50px (يمين ويسار معاً)
  • 20px (تحت)

ج. الحالة الثالثة: قيمتان (الأكثر استخداماً)

الترتيب: (فوق وتحت) - (يمين ويسار).

padding: 20px 50px;

  • 20px (فوق وتحت)
  • 50px (يمين ويسار)

هذه الطريقة مثالية للأزرار (Buttons).

د. الحالة الرابعة: قيمة واحدة (للجميع)

padding: 20px;

تعني 20px من كل الجهات الأربع.

مثال شامل للاختصارات

/* 1. مسافات متساوية للجميع */
.card {
    padding: 20px;
}

/* 2. زر: نريد مسافة جانبية أكبر من العلوية */
.btn {
    /* 10 بيكسل فوق وتحت، 30 بيكسل يمين ويسار */
    padding: 10px 30px; 
}

/* 3. تحكم كامل */
.weird-box {
    padding: 10px 5px 15px 20px; /* فوق يمين تحت يسار */
}

4. الفرق القاتل بين Padding و Margin

المبتدئون يخلطون بينهما لأن كلاهما "مسافة". لكن الفرق جوهري.

وجه المقارنة Padding (حاشية) Margin (هامش)
المكان داخل العنصر (بين المحتوى والإطار). خارج العنصر (حول الإطار من الخارج).
لون الخلفية يتأثر بلون خلفية العنصر (يأخذ نفس اللون). دائماً شفاف (Transparent)، يظهر ما تحته.
التشبيه وزنك الزائد (أنت تكبر وحجمك يكبر). المسافة الشخصية (Personal Space) لكي لا يلمسك أحد.

اختبار سريع: إذا كان لديك زر لونه أحمر، وتريد تكبير الزر نفسه ليكون ضخماً، هل تستخدم margin أم padding؟
الإجابة: Padding (لأنه سيأخذ اللون الأحمر ويكبر الزر). المارجن سيبعد الزر عن جيرانه فقط.

5. تأثير Padding على حجم الصندوق (Box Sizing)

هذه المعلومة تجعل المحترفين يبكون أحياناً. افتراضياً، الـ Padding يزيد من عرض العنصر.

إذا قلت: width: 100px; ثم قلت padding: 20px; (من الجهتين)، فإن العرض الكلي سيصبح 140px (100 + 20 يمين + 20 يسار).

لحل هذه المشكلة وجعل الـ 100px تتضمن الـ Padding بداخلها، نستخدم الكود السحري التالي:

* {
    box-sizing: border-box;
}

بهذا الكود، إذا كان العرض 100 والبادينج 20، سيقوم المتصفح بتقليص المحتوى ليكون 60، ليبقى الإجمالي 100 كما طلبت.

أمثلة عملية مكثفة

مثال: تصميم بطاقة خبر (News Card)

.news-card {
    background-color: white;
    border: 1px solid #ccc;
    
    /* بدون بادينج، النص سيلتصق بالإطار */
    padding: 20px; 
    
    /* هذا يجعل النص مرتاحاً داخل البطاقة */
}

.news-title {
    /* مسافة صغيرة أسفل العنوان فقط */
    padding-bottom: 10px;
}
مثال: قائمة تنقل (Navigation Menu)

.nav-link {
    background-color: #333;
    color: white;
    
    /* البادينج هنا يصنع شكل الزر */
    /* 15 فوق وتحت، 25 يمين ويسار */
    padding: 15px 25px;
    
    display: inline-block; /* لكي يعمل البادينج بشكل صحيح */
}