Menu
flag Ar iconالعربيةdown icon

ظل الصندوق box-shadow في CSS: الصيغة والانتشار وinset

ترسم box-shadow ظلالًا حول صندوق العنصر. تعلّم القيم الخمس (x وy والتمويه والانتشار واللون)، والظلال الداخلية inset، وتكديس عدة ظلال لعمق واقعي، وحلقات التركيز المصنوعة بالانتشار، والأخطاء التي تجعل الظلال باهتة.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تعمل box-shadow

تطلي box-shadow ظلًا حول صندوق حد العنصر. تتبع border-radius، ولا تشغل مساحة في التخطيط، وتحتاج إلى قيمتين على الأقل: مقدار إزاحتها أفقيًا وعموديًا.

الصيغة

box-shadow: [inset] <offset-x> <offset-y> [<blur>] [<spread>] [<color>];
القيمةالمعنىالافتراضي
insetارسم الظل داخل الصندوق، كمنطقة مضغوطة إلى الداخلخارجي
offset-xالموجبة تحرك إلى اليمين، والسالبة إلى اليسارمطلوبة
offset-yالموجبة تحرك إلى الأسفل، والسالبة إلى الأعلىمطلوبة
blurمدى نعومة الحافة؛ لا يمكن أن يكون سالبًا0 (حافة حادة)
spreadيكبّر الظل (موجب) أو يصغّره (سالب)0
colorأي لون؛ الأسود شبه الشفاف يبدو غالبًا الأفضللون النص

عدد الأطوال يحدد معناها: اثنان هما الإزاحتان، والثالث يضيف التمويه، والرابع يضيف الانتشار. جرّب:

جرّب 0 0 0 4px #f59e0b (حلقة)، وinset 0 0 12px #2563eb، و-8px -8px 0 #16a34a.

الانتشار: الحلقات والظلال من جانب واحد

يغيّر الانتشار حجم الظل قبل التمويه. ينتج عنه نمطان:

  • حلقة: بلا إزاحة ولا تمويه، انتشار فقط. على عكس الحد، لا تغيّر حجم العنصر، لذلك هي مؤشر تركيز جيد (:focus-visible { box-shadow: 0 0 0 3px #2563eb; }).
  • حلقة مع فجوة: كدّس انتشارًا أبيض تحت انتشار ملون أكبر.
  • جانب واحد فقط: حرّك الظل إلى الأسفل وصغّره بانتشار سالب، فلا يظهر إلا من الأسفل.

ظلال متراكبة لعمق واقعي

للظلال الحقيقية جزء داكن حاد قريب من الجسم، وجزء ناعم خافت أبعد. طبقتان أو ثلاث تحاكي ذلك أفضل بكثير من تمويه واحد كبير:

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

الظلال الداخلية

ترسم inset الظل داخل صندوق الحشو، كأن السطح مضغوط إلى الداخل. يناسب حقول النص والتجاويف والأزرار المضغوطة:

input {
  box-shadow: inset 0 1px 3px rgb(0 0 0 / 20%);
}
button:active {
  box-shadow: inset 0 3px 6px rgb(0 0 0 / 30%);
}

يُرسم الظل الداخلي فوق الخلفية وتحت المحتوى. أما الظلال التي تتبع أشكال الحروف بدل الصندوق فهي text-shadow.

أخطاء شائعة

  • ظلال سوداء خالصة معتمة تمامًا. تبدو كحد داكن. استخدم ألفا بين 10% و30%.
  • تمويه ضخم واحد للعمق. كدّس ظلًا صغيرًا حادًا مع ظل كبير ناعم.
  • ظل مقصوص عند الحافة. سلف عليه overflow: hidden يقصّه؛ أضف حشوًا إلى السلف أو انقل قاعدة overflow.
  • تمويه سالب. غير صالح ويُتجاهل التصريح كله.
  • تحريك box-shadow على عناصر كثيرة. يعيد الطلاء في كل إطار. في الصفحات الثقيلة، حرّك opacity لعنصر زائف يحمل الظل الأكبر بدلًا من ذلك.

الأسئلة الشائعة

ما صيغة box-shadow؟

box-shadow: offset-x offset-y blur spread color;، مثلًا box-shadow: 0 4px 12px 0 rgb(0 0 0 / 15%);. الإزاحتان وحدهما مطلوبتان؛ أضف inset لرسم الظل داخل الصندوق.

ماذا يفعل الانتشار spread في box-shadow؟

يكبّر الظل (القيمة الموجبة) أو يصغّره (القيمة السالبة) قبل تمويهه. الظل الذي بلا إزاحة ولا تمويه مع انتشار 3px حلقة صلبة بعرض 3px حول العنصر.

كيف أضع ظلًا من الأسفل فقط؟

أزِحه إلى الأسفل واسحبه إلى الداخل بانتشار سالب كي تختفي الجوانب: box-shadow: 0 8px 6px -6px rgb(0 0 0 / 40%);.

هل تؤثر box-shadow على التخطيط؟

لا. الظل لا يشغل مساحة ولا يحرّك العناصر الأخرى، ولهذا هو طريقة جيدة لإضافة حلقة تركيز أو رفع عند التمرير من دون أن يتحرك التخطيط. لكن قد يقصّه overflow: hidden على أحد الأسلاف.

هل يمكن وضع عدة ظلال للصندوق؟

نعم، افصل بينها بفواصل. يُرسم الظل الأول في الأعلى. تكديس ظل صغير حاد مع ظل كبير ناعم يبدو أكثر طبيعية من ظل واحد كبير.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن