الرئيسية تعليم لغات البرمجة التموضع الأساسي في CSS: التحكم بمواقع العناصر

التموضع الأساسي في CSS: التحكم بمواقع العناصر

amr gamal سبتمبر 16, 2026

في بناء صفحات الويب، يعتبر التحكم في أماكن ظهور العناصر على الشاشة مهارة أساسية لا غنى عنها. حتى هذه المرحلة، تعرفت على كيفية تنسيق الألوان، وتعديل المسافات باستخدام الهوامش والحشوات، وتوزيع العناصر بجانب بعضها أو أسفلها باستخدام التدفق الطبيعي للصفحة. لكن ماذا لو احتجت إلى إخراج عنصر من هذا التدفق الطبيعي، أو وضعه فوق عنصر آخر، أو تثبيته في زاوية الشاشة أثناء التمرير؟ هنا يأتي دور خاصية التموضع الأساسي (Positioning) في لغة CSS.

في هذا الدرس، ستتعلم كيف تتحكم بدقة في مواقع العناصر عبر فهم القيم المختلفة لخاصية التموضع، وكيف تؤثر هذه القيم على سلوك العناصر داخل المتصفح، مما يتيح لك بناء تصاميم أكثر مرونة ودقة.

مفهوم التدفق الطبيعي للعناصر (Normal Flow)

قبل الغوص في تفاصيل التموضع، من الضروري أن تفهم كيف يتعامل المتصفح افتراضياً مع العناصر في لغة HTML. يُعرف هذا السلوك بـ "التدفق الطبيعي" (Normal Flow). في هذا التدفق، ترتّب المتصفحات العناصر الكتلة (Block-level elements) فوق بعضها البعض بشكل عمودي، بينما تترتب العناصر المضمنة (Inline elements) بجانب بعضها أفقياً حسب مساحة السطر.

عندما تبدأ باستخدام خاصية التموضع، فإنك تبدأ في تعديل هذا السلوك الافتراضي. تعتمد خاصية التموضع بشكل أساسي على خاصية position بالتعاون مع أربع خصائص مساعدة لتحديد الإحداثيات، وهي: top، right، bottom، و left.

القيمة الافتراضية: التموضع الثابت (Static Positioning)

القيمة الافتراضية لأي عنصر في لغة CSS هي position: static. هذا يعني أن العنصر يقع تماماً داخل التدفق الطبيعي للصفحة ولا يخضع لأي تعديل في مكانه بناءً على خصائص الإحداثيات.

إذا قمت بكتابة خصائص مثل top: 20px أو left: 50px على عنصر يحمل القيمة static، فلن يحدث أي تغيير على الإطلاق، وسيتجاهلها المتصفح تماماً. هذه القيمة لا تحتاج إلى كتابتها عادةً لأنها مُطبقة بشكل افتراضي على جميع العناصر.

التموضع النسبي (Relative Positioning)

عندما تقوم بتغيير قيمة خاصية التموضع إلى position: relative، فإن العنصر يظل في مكانه الأصلي داخل التدفق الطبيعي للصفحة، ولن يتأثر العناصر المحيطة به. ولكن، تتيح لك هذه القيمة إزاحة العنصر من مكانه الأصلي باستخدام خصائص الإحداثيات (top، right، bottom، left).

الفكرة الأساسية هنا أن الإزاحة تحدث "بالنسبة لمكان العنصر الأصلي". فإذا أزحت عنصراً بمقدار 20 بكسل للأعلى، فسيرتفع عن مكانه الأصلي، لكن الفراغ الذي كان يشغله في التدفق الطبيعي سيبقى كما هو، ولن تتحرك العناصر الأخرى لملئه.

التموضع المطلق (Absolute Positioning)

تختلف القيمة position: absolute جذرياً عن القيم السابقة. عندما تجعل العنصر مطلق التموضع، فإنه يُخرج تماماً من التدفق الطبيعي للصفحة. هذا يعني أن العناصر الأخرى تتجاهل وجوده تماماً وكأنّه غير موجود، مما قد يتسبب في تراكب العناصر فوق بعضها إذا لم تقم بإدارة المساحات بعناية.

يتم تحديد مكان العنصر مطلق التموضع بناءً على أول عنصر أب يمتلك خاصية تموضع غير القيمة الافتراضية (أي أب يحمل relative أو absolute أو fixed). وإذا لم يجد المتصفح أي أب متموضع في شجرة العناصر، فسيكون المرجع الأساسي له هو نافذة المتصفح نفسها (Viewport).

التموضع الثابت على الشاشة (Fixed Positioning)

تشبه القيمة position: fixed التموضع المطلق من حيث إخراج العنصر من التدفق الطبيعي للصفحة وعدم حجز مساحة له، لكنها تختلف في نقطة المرجع. العنصر الذي يمتلك خاصية التموضع الثابت يتموضع دائماً بالنسبة لنافذة المتصفح (Viewport)، بغض النظر عن أي عنصر أب.

الميزة الأبرز للتموضع الثابت هي أن العنصر يظل ثابتًا في مكانه على الشاشة حتى عندما يقوم المستخدم بالتمرير (Scrolling) لأعلى أو لأسفل. يُستخدم هذا النوع غالباً في قوائم التنقل العلوية (Navigation Bars) التي تبقى ظاهرة للمستخدم طوال فترة تصفحه للصفحة.

مثال عملي شامل

لنلقِ نظرة على مثال عملي يوضح الفرق السلوكي بين العناصر ذات التموضع النسبي والمطلق والثابت. سنقوم بإنشاء حاوية تحتوي على عدة صناديق بتنسيقات مختلفة.

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <title>تعلم التموضع الأساسي</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            height: 2000px; /* لتمكين التمرير */
            margin: 0;
            padding: 20px;
            background-color: #f4f4f9;
        }

        .container {
            position: relative; /* ليكون مرجعاً للعناصر المطلقة بداخله */
            width: 100%;
            max-width: 600px;
            height: 400px;
            background-color: #ffffff;
            border: 2px solid #ccc;
            margin-top: 50px;
        }

        .box {
            width: 100px;
            height: 100px;
            color: #fff;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
        }

        .box-1 {
            background-color: #3498db;
            position: relative;
            top: 20px;
            right: 20px;
        }

        .box-2 {
            background-color: #e74c3c;
            position: absolute;
            top: 50px;
            left: 50px;
        }

        .box-3 {
            background-color: #2ecc71;
            position: fixed;
            bottom: 20px;
            left: 20px;
        }
    </style>



    <h2>فهم التموضع في CSS</h2>
    <p>قم بالتمرير للأسفل لملاحظة سلوك العناصر المتموضعة.</p>

    <div class="container">
        <div class="box box-1">نسبي</div>
        <div class="box box-2">مطلق</div>
    </div>

    <div class="box box-3">ثابت</div>


شرح المثال العملي

في الكود السابق، قمنا بتطبيق ثلاثة أنواع مختلفة من التموضع لتوضيح الآثار المرئية والسلوكية لكل منها:

  • الحاوية الرئيسية (.container): أعطيناها الخاصية position: relative لكي تعمل كمرجع أساسي لأي عنصر أبناء يحمل التموضع المطلق داخلها.
  • الصندوق الأول (.box-1): يحمل خاصية position: relative مع إزاحة top: 20px و right: 20px. لاحظ أن العنصر تحرك من مكانه الأصلي داخل التدفق الطبيعي، ولكنه احتفظ بمساحته الأصلية ولم يؤثر على ترتيب العناصر الأخرى.
  • الصندوق الثاني (.box-2): يحمل خاصية position: absolute. تم توجيهه ليتموضع على بعد 50 بكسل من أعلى ويسار الحاوية الأب (لانها تحمل تموضعاً نسبياً). هذا العنصر خرج تماماً من التدفق الطبيعي.
  • الصندوق الثالث (.box-3): يحمل خاصية position: fixed مع إزاحة من الأسفل واليسار. هذا العنصر يلتصق بنافذة المتصفح ويبقى ظاهراً في نفس المكان حتى لو قمت بالتمرير لأسفل الصفحة.

أخطاء شائعة عند استخدام التموضع

عند التعامل مع التموضع لأول مرة، يقع المبتدئون في بعض الأخطاء المتكررة التي تؤدي إلى نتائج غير متوقعة في التصميم:

  • الاعتماد المفرط على التموضع المطلق: يميل البعض لاستخدام position: absolute لتنظيم كل عناصر الصفحة. هذا يجعل التصميم هشاً وغير متجاوب مع أحجام الشاشات المختلفة، ويُفضل استخدام التدفق الطبيعي أو الأدوات الحديثة مثل فليكس بوكس وشبكة سي إس إس لتخطيط الصفحة الأساسي.
  • نسيان تحديد الأب المتموضع: عندما تستخدم عنصراً مطلق التموضع وتتوقع أن يتحرك داخل حاوية معينة، تنسى أحياناً إضافة position: relative للحاوية الأب. نتيجة لذلك، يبحث العنصر عن أب متموضع فلا يجد، ويستقر بناءً على نافذة المتصفح بالكامل.
  • تداخل العناصر (Z-Index): عند إخراج العناصر من التدفق الطبيعي عبر التموضع المطلق أو الثابت، تتراكب العناصر فوق بعضها. قد تجد عنصراً مهماً مختفياً خلف عنصر آخر لأنك لم تحدد ترتيب طبقات العرض باستخدام خاصية z-index.

خلاصة

خاصية التموضع في CSS هي أداة قوية للتحكم الدقيق في أماكن العناصر التي تتطلب سلوكاً استثنائياً لا يوفره التدفق الطبيعي للصفحة. تذكر دائماً أن التموضع النسبي يحافظ على مساحة العنصر الأصلية ويحركه بالنسبة لنفسه، بينما التموضع المطلق يخرج العنصر تماماً من التدفق ويعتمد على الأب المتموضع، والتموضع الثابت يُبقي العنصر ملتصقاً بنافذة المتصفح أثناء التمرير. استخدم هذه الأدوات بحكمة وبقدر الحاجة للحفاظ على مرونة وتجاوب صفحات الويب الخاصة بك.

الكاتب
عمرو جمال

محرر متخصص في تطوير قوالب بلوجر وووردبريس وتقديم شروحات التقنية. أقدم حلولاً مبتكرة لتصميم مواقع عصرية وجذابة.