خاصية z-index
في لغة CSS تُستخدم لتحديد ترتيب تراكب العناصر على المحور Z (المحور العمودي أو العمق). بمعنى آخر، تُحدد هذه الخاصية أي عنصر سيظهر فوق عنصر آخر عندما يتداخلان.
تُستخدم خاصية z-index
فقط مع العناصر التي تم تحديد موضعها (positioned elements)، أي العناصر التي لديها قيمة للخاصية position
غير static
. قيم position
التي تُفعّل z-index
هي:
relative
absolute
fixed
sticky
قيم 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
أداة قوية للتحكم في ترتيب تراكب العناصر، ولكن يجب استخدامها بحذر وفهم كيفية عملها مع سياقات التكديس.