CSS: هوامش وحشو CSS
آخر تحديث: 2026-10-13
المسافات في CSS تأتي بنوعين: حشو وهامش. هما خصائص أساسية للتحكم في "الفراغ الداخلي" و"المسافة الخارجية" للعناصر.
مرجع سريع لخصائص المسافات
| الخاصية | القيم الشائعة | الغرض |
|---|---|---|
padding |
16px، 10px 20px، 10px 5px 15px 20px |
حشو (أعلى، يمين، أسفل، يسار) |
padding-top/right/bottom/left |
16px، 5% |
حشو جانب واحد |
margin |
20px، 0 auto، 10px 0 20px 0 |
هامش (أعلى، يمين، أسفل، يسار) |
margin-top/right/bottom/left |
10px، auto |
هامش جانب واحد |
auto |
margin: 0 auto |
توسيط عناصر قطعية أفقياً |
💡 قاعدة اختصار الهامش: 4 قيم (أعلى، يمين، أسفل، يسار) → 3 قيم (أعلى، يمين+يسار، أسفل) → 2 قيم (أعلى+أسفل، يمين+يسار) → 1 قيمة (جميع الجوانب متساوية).
1. الحشو
padding هو المسافة بين منطقة المحتوى والحدود — "الفراغ الداخلي" للعنصر.
▶ مثال
▶ جرّب الكود(1) تعيين جوانب فردية
▶ مثال
▶ جرّب الكود(2) قواعد اختصار الحشو
💡 خدعة الذاكرة: اختصار الحشو/الهامش يبدأ من "الأعلى" مع عقارب الساعة — أعلى، يمين، أسفل، يسار. لا تتذكر؟ فكّر "مع عقارب الساعة من الساعة 12." قيمتان تعنيان "أعلى+أسفل، يمين+يسار."
CSS
/* قيمة واحدة: جميع الجوانب متساوية */
padding: 20px;
/* قيمتان: أعلى+أسفل، يمين+يسار */
padding: 10px 20px;
/* ثلاث قيم: أعلى، يمين+يسار، أسفل */
padding: 10px 20px 30px;
/* أربع قيم: أعلى، يمين، أسفل، يسار (مع عقارب الساعة) */
padding: 10px 20px 30px 40px;
(3) حالات استخدام الحشو الشائعة
▶ مثال
▶ جرّب الكود(4) ملاحظات الحشو
📌 ملاحظة العنصر السطري: حشو
<span> و<a> والعناصر السطرية الأخرى يعمل فقط أفقياً. إذا أردت مناطق نقر مثالية على العناصر السطرية، اضبط display: inline-block.
- منطقة الحشو تُظهر لون خلفية العنصر والصور
- الحشو يجعل العناصر "أكبر" (ما لم تستخدم
box-sizing: border-box) - العناصر السطرية (مثل
<span>) حشوها يعمل فقط أفقياً
2. الهامش
margin هو المسافة بين حدود العنصر والعناصر الأخرى — "المسافة الخارجية" للعنصر.
▶ مثال
▶ جرّب الكود(1) قواعد اختصار الهامش
نفس الحشو:
CSS
margin: 20px; /* جميع الجوانب متساوية */
margin: 10px 20px; /* أعلى+أسفل، يمين+يسار */
margin: 10px 20px 30px; /* أعلى، يمين+يسار، أسفل */
margin: 10px 20px 30px 40px; /* أعلى، يمين، أسفل، يسار */
(2) حالات استخدام الهامش الشائعة
▶ مثال
▶ جرّب الكود(3) استخدام margin: auto للتوسيط
margin: 0 auto يمكنه توسيط عنصر قطعي أفقياً داخل أصله:
▶ مثال
▶ جرّب الكود3. تداخل الهامش
⚠️ فخ كلاسيكي: الهوامش العمودية المتجاورة تتداخل في الأكبر — يُسمى "تداخل الهامش." أبسط إصلاح هو إضافة
overflow: hidden أو padding: 1px لعنصر الأصل. استخدام حاوية flex يمنع هذا أيضاً.
هذا مفهوم CSS مهم — الهوامش العمودية المتجاورة تتداخل في واحد، تأخذ القيمة الأكبر.
(1) السيناريو 1: أشقاء متجاورون
▶ مثال
▶ جرّب الكود(2) السيناريو 2: عناصر أصلية-تابعة
عندما لا يحتوي الأصل على حشو أو حدود أو محتوى، هامش الابن "يخترق" خارج الأصل:
▶ مثال
▶ جرّب الكودطرق التجنب:
- أضف
padding: 1pxللأصل (أو أي قيمة موجبة) - أضف
border: 1px solid transparentللأصل - أضف
overflow: hiddenللأصل - استخدم تخطيط flex أو grid
(3) السيناريو 3: عناصر فارغة
عنصر قطعي بدون محتوى أو حشو أو حدود سيكون له أيضاً تداخل في الهوامش العلوية والسفلية.
(4) حالات عدم تداخل الهامش
- الهوامش الأفقية (يمين/يسار) لا تتداخل
- أبناء تخطيط flex لا يتداخلون
- العناصر العائمة لا تتداخل
- العناصر المتموضعة absolutely لا تتداخل
4. اختيار الحشو مقابل الهامش
| السيناريو | استخدم أيهما |
|---|---|
| منع نص الزر من لمس الحواف | حشو |
| إبعاد بطاقتين عن بعضهما | هامش |
| إبعاد المحتوى عن الحدود | حشو |
| توسيط حاوية في الصفحة | margin: auto |
| التحكم في حجم منطقة الخلفية | حشو |
طريقة قرار بسيطة: هل يجب أن تغطي الخلفية هذه المنطقة؟ إذا نعم، استخدم حشو؛ إذا لا، استخدم هامش.
❓ أسئلة شائعة
س ما هو تداخل الهامش؟
ج الهوامش العمودية المتجاورة تتداخل في الأكبر. مثلاً، عنصر لديه
margin-bottom: 30px، والتالي لديه margin-top: 20px — المسافة الفعلية 30px وليست 50px. إضافة overflow: hidden للأصل أو استخدام تخطيط flex يمنع هذا.س ماذا لو جعل الحشو العناصر كبيرة جداً؟
ج اضبط عالمياً
box-sizing: border-box. هذا يشمل الحشو والحدود في العرض/الارتفاع الكلي للعنصر، مانعاً التوسع. تقريباً جميع المشاريع الحديثة تفعل هذا.س ما شروط توسيط margin: 0 auto؟
ج يجب أن يكون للعنصر عرض صريح (ليس auto) ويجب أن يكون عنصراً قطيعياً (display: block). العناصر السطرية وعناصر المستوى القطري بدون عرض مُعيَّن لا يمكن توسيطها بـ margin: auto.
📖 ملخص
- الحشو والهامش هما خصائص المسافة الأكثر استخداماً في تخطيط CSS
- الحشو يتحكم في الفراغ الداخلي، والهامش يتحكم في المسافة الخارجية
- فهم قواعد اختصارهما وفخ "تداخل الهامش" هو معرفة أساسية لتخطيطات موثوقة
- تعيين
box-sizing: border-boxعالمياً في بداية المشروع يمنع الحشو من توسيع العناصر ويُبسط حسابات الأبعاد
📝 تمارين
- أنشئ صفحة "مجموعة بطاقات" بـ 3 بطاقات، باستخدام الهامش للتحكم في المسافة بين البطاقات.
- أنشئ شريط تنقل باستخدام الحشو للتحكم في المسافة من النص إلى الحدود في كل عنصر تنقل.
- وضح "تداخل الهامش" وحله ب طريقتين مختلفتين على الأقل.
- استخدم
margin: 0 autoلتوسيط حاوية بعرض 800px أفقياً في الصفحة.