اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم ورحمة الله وبركاته 

لماذا نقوم بأعطاء العنصر الاب position:relative و العنصر الابن نعطيه position:absalute 

وشكرا 

تم التعديل في بواسطة Hassan Hedr
توضيح العنوان

Recommended Posts

  • 0
نشر

القيمة absolute للخاصية postion في CSS تجعل العنصر يتموضع في مكان ثابت بالنسبة إلى المبدأ، تعمل تلك الخاصية عبر البحث ضمن شجرة DOM عن أقرب عنصر أب يملك الخاصية position: relative ليتمكن من حساب التموضع الحالي للعنصر،

عند تطبيقك يدويًا لتلك الخاصية فأنت تحدد العنصر الأب الذي سيتم التموضع بالنسبة له، أي تكون الإحداثيات التالية تساوي مكان العنصر الأب صاحب القيمة relative

top:0;
left:0;

 يمكنك الاستفادة من قراءة المقال التالي:

 

  • 2
نشر

الخاصية position: relative تقوم بالسماح لك بتحربك العنصر نسبةً لموضوعه الأصلي، فتخيل أن لدينا الكود التالي:

<style>
  .container {
    background-color: pink;
    width: 700px;
    height: 500px;
    margin: auto;	/* لتوسيط الحاوية أفقيًا */
  }
  .box {
    width: 150px;
    height: 150px;
    color: white;
    text-align: center;
    display: inline-block; /* لجعل الصناديق بجانب بعضها البعض */
  }
  
  /* تغير ألوان الصناديق */
  .red { background-color: red; }
  .green { background-color: green; }
  .blue { background-color: blue; }
  .black { background-color: black; }
</style>

<div class="container">
  <div class="box red">1</div>
  <div class="box green">2</div>
  <div class="box blue">3</div>
  <div class="box black">4</div>
</div>

ستكون النتيجة بالشكل التالي:

6245b503aae7b_2022-03-3116_04_35-.thumb.png.9b80973cb0c1f9ed0b9fba9f27bdc3b2.png

الآن لنحاول تحريك الصندوق الأزرق من خلال الخصائص top و left:

.blue {
  background-color: blue;
  top: 10px;
  left: 10px;
}

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

.blue {
  background-color: blue;
  top: 10px;
  left: 10px;
  position: relative;
}

ستجد أن العنصر تحرك من مكانه الأصلي بنسبة 10px من الأعلى ومن اليسار:

6245b5dfba254_2022-03-3116_07_42-127.0.0.1_5500_index.html-Personal-MicrosoftEdge.thumb.png.d8990d40f66a08c865fce3f57c2a0fe5.png

لنحاول الآن تغير قيمة الخاصية position لتصبح absolute بدلًا من relative:

6245b624c85da_2022-03-3116_09_18-127.0.0.1_5500_index.html-Personal-MicrosoftEdge.thumb.png.5a75c4af5ad817a71b7903b142bcaa9b.png

لاحظ أن العنصر قد تحرك بداية من أول الصفحة (العنصر body) بقيمة 10px من الأعلى top ومن اليسار left، لكن ماذا إذا أردنا أن نحرك العنصر بقيمة 10px من داخل الحاوية container، حينها يجب أن نضيف الخاصية position: relative إلى الحاوية container:

.container {
  background-color: pink;
  width: 700px;
  height: 500px;
  margin: auto;
  
  position: relative;
}

.blue {
  background-color: blue;
  top: 10px;
  left: 10px;
  position: absolute;
}

وسنجد حينها أن العنصر بدأ التحرك من بداية الحاوية container:

6245b69ca9c66_2022-03-3116_11_21-127.0.0.1_5500_index.html-Personal-MicrosoftEdge.thumb.png.b064d9e8038bc4c7d8ecf21b1fb49683.png

السبب في ذلك هو أن الخاصية position: absolute تجعل العنصر يتحرك من بداية أقرب عنصر أب له يحمل الخاصية position: relative (لاحظ أن الحاوية container هي عنصر أب للصندوق الأزرق، ولها الخاصية position: relative)، وإذا لم يكن هناك أي عنصر أب للصندوق يحمل الخاصية position: relative سوف يبدأ العنصر التحرك من بداية الصفحة.

يمكنك الإطلاع على التوثيق الكامل للخاصية position في موسوعة حسوب من هنا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...