تموضع CSS
التموضع CSS هو أداة تخطيط قوية تتيح لك التحكم الدقيق في موضع العناصر على الصفحة.
مرجع سريع لخاصية position
| القيمة | السلوك | نقطة المرجع | الاستخدام الشائع |
|---|---|---|---|
static |
تدفق عادي (افتراضي) | — | السلوك الافتراضي |
relative |
إزاحة من الموضع العادي | الموضع الأصلي للعنصر | ضبط دقيق، سياق تموضع |
absolute |
مُزال من التدفق | أقرب أصل مُتموضع | شارات، تراكبات |
fixed |
ثابت في منفذ العرض | منفذ العرض | تروسيات ثابتة، زر العودة للأعلى |
sticky |
هجين | حاوية تمرير + منفذ العرض | تروسيات ثابتة |
position: relative
يزاح العنصر من موضعه العادي، بدون إزالته من تدفق المستند:
مثال
HTML
<style>
.box {
position: relative;
top: 20px; /* يتحرك للأسفل 20px */
left: 30px; /* يتحرك لليمين 30px */
background: #e3f2fd;
padding: 10px;
}
</style>
<div class="box">موضع نسبي (مُزاح من الموضع الأصلي)</div>
<p>هذه الفقرة تبقى في التدفق العادي — الصندوق لا يزال يشغل مساحته الأصلية.</p>
استخدامات شائعة:
- ضبط دقيق لموضع العنصر
- إنشاء سياق تموضع للأبناء absolutely
position: absolute
يُزال العنصر من التدفق، موضعه نسبي لأقرب أصل مُتموضع:
مثال
HTML
<style>
.parent {
position: relative;
width: 300px;
height: 200px;
background: #f5f5f5;
border: 2px solid #333;
}
.badge {
position: absolute;
top: 10px;
right: 10px;
background: #e74c3c;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
}
</style>
<div class="parent">
<div class="badge">HOT</div>
<p>محتوى بطاقة المنتج</p>
</div>
نقطة مفتاحية: إذا لم يكن هناك أصل مُتموضع، absolute يوضع نسبياً لمنفذ العرض.
position: fixed
ثابت في منفذ العرض، لا يتحرك مع الصفحة:
مثال
HTML
<style>
.fixed-header {
position: fixed;
top: 0;
left: 0;
right: 0;
background: #2c3e50;
color: white;
padding: 10px 20px;
z-index: 1000;
}
</style>
<div class="fixed-header">ترويسة ثابتة — دائماً مرئية في الأعلى</div>
استخدامات شائعة:
- أشرطة تنقل
- أزرار العودة للأعلى
- أدوات دردشة
position: sticky
هجين من relative و fixed — يتحرك بشكل عادي ثم "يلتصق" عند عتبة:
مثال
<style>
.sticky-nav {
position: sticky;
top: 0;
background: #2c3e50;
color: white;
padding: 10px;
z-index: 100;
}
</style>
<div class="sticky-nav">تنقل لاصق — يتحرك مع المحتوى، ثم يلتصق في الأعلى</div>
ملاحظات الاستخدام:
- يتطلب قيمة
topأوbottomأوleftأوrightللعمل - عنصر الأصل لا يمكن أن يحتوي على
overflow: hiddenأوoverflow: auto - ارتفاع الأصل يجب أن يكون أكبر من ارتفاع العنصر اللاصق
z-index (ترتيب التكديس)
عندما تتراكب العناصر، z-index يتحكم في أيها يظهر في الأعلى:
مثال
HTML
<style>
.box1 {
position: absolute;
z-index: 10;
background: #e74c3c;
width: 100px;
height: 100px;
}
.box2 {
position: absolute;
z-index: 5;
background: #3498db;
width: 100px;
height: 100px;
left: 30px;
top: 30px;
}
</style>
<div class="box1">z-index: 10 (في الأعلى)</div>
<div class="box2">z-index: 5 (خلف)</div>
ملاحظة: z-index يعمل فقط على العناصر المُتموضعة (ليست static).
سياق التكديس
z-index يُقارن داخل نفس "سياق التكديس". كل عنصر مُتموضع يُنشئ سياق تكديس — z-index الأبناء يُقارن فقط داخل سياق الأصل.
❓ أسئلة شائعة
س ماذا يُستخدم لـ position: relative؟
ج يُستخدم بشكل شائع كمرجع تموضع للأبناء absolutely. أضف `position: relative` إلى أصل (without إزاحة)، وابناء `position: absolute` ستموضع نسبياً لذلك الأصل. without relative على الأصل، absolutely تتموضع نسبياً للصفحة بأكملها.
س تموضع fixed لا يعمل جيداً على المحمول؟
ج fixed يتصرف بشكل غير متسق في Safari المحمول، خاصة مع لوحات المفاتيح المنبثقة أو تمرير الصفحة. استخدم `position: sticky` كبديل لبعض السيناريوهات، أو استخدم JavaScript لكشف المحمول والتعامل معه بشكل خاص.
س z-index مُعيَّن عالٍ لكن لا يزال محجوباً؟
ج z-index يعمل فقط داخل نفس سياق التكديس. إذا كان للأصل z-index، z-index الأبناء يُقارن فقط داخل سياق ذلك الأصل — لن يتجاوز حدود الأصل. تحقق إذا كان الأصل يحتوي على z-index أقل، أو إذا كان الأصل يحتوي على خصائص مثل `opacity` تُنشئ سياقات تكديس جديدة.
📖 ملخص
- تموضع CSS هو أداة تخطيط قوية
relativeللضبط الدقيق وسياق التموضعabsoluteيُوضع بدقة الأبناء داخل الأصولfixedللعناصر الثابتة في منفذ العرض (تنقل، زر العودة للأعلى)stickyلسيناريوهات "اللصق في الموضع"- أتقن التموضع مع تكديس z-index لتلبية أي احتياج تخطيط
📝 تمارين
- أنشئ "بطاقة منتج" بشارة "HOT" في الزاوية العلوية اليمنى باستخدام
position: absolute. - أنشئ شريط تنقل سفلي ثابت أو إشعار حقوق النشر باستخدام
position: fixed. - أنشئ "ترويسة لاصقة" — عناوين أقسام تلتصق في الأعلى عند التمرير حتى يدفعها العنوان التالي.
- نفّذ توسيط absolute لعنصر أصل (باستخدام absolute + top/left + transform).



