خاصية z-index في لغة CSS تُستخدم لتحديد ترتيب تراكب العناصر على المحور Z (المحور العمودي أو العمق). بمعنى آخر، تُحدد هذه الخاصية أي عنصر سيظهر فوق عنصر آخر عندما يتداخلان.
تُستخدم خاصية z-index فقط مع العناصر التي تم تحديد موضعها (positioned elements)، أي العناصر التي لديها قيمة للخاصية position غير static. قيم position التي تُفعّل z-index هي:
relativeabsolutefixedsticky
قيم z-index:
تأخذ خاصية z-index قيمًا رقمية صحيحة، سواء كانت موجبة أو سالبة أو صفر.
- قيم موجبة: تُظهر العنصر فوق العناصر الأخرى التي لديها قيم
z-indexأقل. كلما زادت القيمة، زاد ارتفاع العنصر في الترتيب. - صفر: هي القيمة الافتراضية، وتعني أن العنصر يظهر في ترتيبه الطبيعي في شفرة HTML.
- قيم سالبة: تُظهر العنصر تحت العناصر الأخرى التي لديها قيم
z-indexأعلى أو صفر.
كيف يعمل z-index؟
عندما يتداخل عنصران أو أكثر، يتم تحديد ترتيب ظهورهما بناءً على القيم التالية (بالترتيب):
- ترتيب ظهور العناصر في شفرة HTML: إذا لم يتم تحديد قيمة
z-indexلأي من العناصر المتداخلة، فإن العنصر الذي يظهر لاحقًا في شفرة HTML سيظهر فوق العنصر الذي يسبقه. - قيمة
z-index: إذا تم تحديد قيمz-indexللعناصر المتداخلة، فإن العنصر ذو القيمة الأعلى سيظهر فوق العناصر الأخرى. - سياقات التكديس (Stacking Contexts): تُنشئ بعض الخصائص سياقات تكديس جديدة، مما يُؤثر على كيفية عمل
z-index. من بين الخصائص التي تُنشئ سياقات تكديس:- العنصر الجذري للمستند (
<html>) - العناصر التي لديها قيمة
positionغيرstaticوقيمةz-indexغيرauto - العناصر التي لديها خاصية
opacityبقيمة أقل من 1 - العناصر التي لديها خاصية
transformبقيمة غيرnone - العديد من الخصائص الأخرى (مثل
filter،isolation،mix-blend-mode)
- العنصر الجذري للمستند (
عندما يتم إنشاء سياق تكديس جديد، فإن قيم z-index للعناصر داخله تُصبح نسبية لهذا السياق فقط، ولا تُقارن بقيم z-index للعناصر خارج هذا السياق.
مثال:
<div class="box box1">Box 1</div><div class="box box2">Box 2</div>.box { width: 100px; height: 100px; position: absolute; /* ضروري لاستخدام z-index */}
.box1 { background-color: red; top: 20px; left: 20px; z-index: 2;}
.box2 { background-color: blue; top: 50px; left: 50px; z-index: 1;}في هذا المثال، سيظهر المربع الأحمر (Box 1) فوق المربع الأزرق (Box 2) لأن لديه قيمة z-index أعلى (2 مقابل 1).
ملاحظات مهمة:
- استخدام قيم
z-indexعالية جدًا (مثل 9999) ليس ضروريًا دائمًا وقد يُسبب مشاكل في المستقبل. من الأفضل استخدام قيم صغيرة نسبيًا وتحديدها بعناية. - فهم سياقات التكديس مهم جدًا لفهم كيفية عمل
z-indexبشكل صحيح. - قد يُؤدي الإفراط في استخدام
z-indexإلى تعقيد شفرة CSS وجعلها صعبة الصيانة.
باختصار، تُعتبر خاصية z-index أداة قوية للتحكم في ترتيب تراكب العناصر، ولكن يجب استخدامها بحذر وفهم كيفية عملها مع سياقات التكديس.
.webp)