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

التمويه blur والمرشحات filter في CSS: blur() وgrayscale وbrightness

تموّه filter: blur(5px) العنصر، وتموّه backdrop-filter: blur() ما خلفه. تعلّم كل دوال المرشحات (brightness وcontrast وgrayscale وsepia وsaturate وhue-rotate وinvert وdrop-shadow) مع منزلقات حية، وكيف تجمع بينها، ومشكلة الحواف المموهة.

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

تمويه عنصر

تأخذ filter: blur() طولًا هو نصف قطر التمويه. كلما كبر زاد تمويه العنصر:

تعمل filter على أي عنصر، لا على الصور فقط: الـ div المموه يموّه نصه وحده وأبناءه أيضًا. لاحظ الحواف الناعمة في الصور المموهة: ينشر التمويه الصورة إلى الخارج ويمزج معها المنطقة الشفافة المحيطة. الحل في الأسفل، تحت «مشكلة الحواف المموهة».

تمويه الخلفية: backdrop-filter

لتمويه ما خلف العنصر (لوحة زجاج مصنفر فوق صورة أو صفحة)، استخدم backdrop-filter. يبقى محتوى العنصر نفسه حادًا. ويحتاج إلى خلفية شفافة كي يظهر التمويه:

الخطوط والدوائر حادة حول اللوحة ومموهة خلفها، بينما لا يُمس نص اللوحة. أبقِ النص مقروءًا: درجة أفتح أو أغمق في لون الخلفية تساعد فوق الصور المزدحمة.

كل دوال المرشحات مباشرة

حرّك أي منزلق. السطر تحت الصورة هو قيمة filter بالضبط، جاهزة للنسخ:

الدوال التي حرّكتها بعيدًا عن قيمتها المحايدة هي وحدها التي تُكتب، وهذا يبقي القيمة قصيرة. لا تغيّر brightness(1) أو blur(0px) شيئًا، فلا داعي لذكرهما.

دوال المرشحات

الدالةالقيمة المحايدةماذا تفعلمثال
blur(r)0تمويه غاوسي بنصف قطر rblur(4px)
brightness(n)1أغمق تحت 1، وأسطع فوقهbrightness(0.7)
contrast(n)1أبهت تحت 1، وأقوى فوقهcontrast(1.3)
grayscale(n)0القيمة 1 (أو 100%) رمادية تمامًاgrayscale(100%)
sepia(n)0درجة بنية دافئةsepia(0.6)
saturate(n)10 رمادي، وفوق 1 أكثر حيويةsaturate(1.5)
hue-rotate(a)0degتزيح كل درجة لونية حول عجلة الألوانhue-rotate(90deg)
invert(n)0القيمة 1 صورة سالبة كاملةinvert(1)
opacity(n)1مثل الخاصية opacityopacity(0.5)
drop-shadow(x y blur color)ظل يتبع الشكلdrop-shadow(2px 4px 6px rgb(0 0 0 / 0.3))

يمكن أن تكون الأرقام نسبًا مئوية أيضًا (grayscale(100%) تساوي grayscale(1)). توضع عدة دوال في قيمة واحدة، مفصولة بمسافات، وتُطبَّق بالترتيب: تعطي filter: grayscale(1) sepia(1) لونًا بنيًا، بينما تنتهي sepia(1) grayscale(1) إلى رمادي عادي.

drop-shadow تتبع الشكل

box-shadow دائمًا مستطيل (بزوايا مستديرة على الأكثر). أما drop-shadow() فتُرسم من البكسلات المرئية، فتحصل الأيقونة الشفافة على ظل بحدود الأيقونة:

النجمة الأولى تلقي ظلًا مربعًا من صندوقها المحيط غير المرئي. والثانية تلقي ظلًا بشكل نجمة. وعلى عكس box-shadow، لا يوجد في drop-shadow() انتشار ولا inset؛ وتشرحهما صفحة box-shadow.

مشكلة الحواف المموهة

تتلاشى الصورة المموهة عند حوافها، لأن التمويه يسحب إليها البكسلات الشفافة المحيطة. للاحتفاظ بحافة حادة (لخلفية رئيسية مموهة مثلًا)، ضع الصورة في حاوية عليها overflow: hidden وكبّر الصورة قليلًا كي تُقص الحافة الناعمة:

.hero { overflow: hidden; }
.hero img { filter: blur(8px); transform: scale(1.1); }

تأثيرات التمرير مع filter

يمكن تحريك filter بانتقال، فجدار شعارات يتحول من الرمادي إلى الألوان، أو بطاقة معتمة حتى يمر فوقها المؤشر، لا يحتاج إلا إلى قاعدتين:

مرّر المؤشر فوق مربع (أو انتقل إليه بـ Tab) فتظهر ألوانه تدريجيًا.

من المفيد معرفته

  • الأداء. أنصاف أقطار التمويه الكبيرة على مساحات كبيرة هي الأعلى كلفة، خاصةً backdrop-filter على عناصر تتحرك أو تتمرر. اختبر على هاتف.
  • سهولة القراءة. لا تموّه أبدًا نصًا يحتاج الناس إلى قراءته، وافحص التباين للنص فوق لوحة مصنفرة.
  • التراكب. أي filter غير none تنشئ سياق تراكب جديدًا وتصبح الكتلة الحاوية لأحفاد position: fixed، مثل transform.

أخطاء شائعة

  • filter: blur(5). يحتاج نصف القطر إلى وحدة: blur(5px).
  • استخدام filter: blur() للوحة مصنفرة. يموّه نص اللوحة نفسه. استخدم backdrop-filter مع خلفية شفافة.
  • backdrop-filter لا تُظهر شيئًا. يجب أن تكون خلفية العنصر شفافة جزئيًا على الأقل، وأن يوجد شيء خلفه.
  • تصريحا filter. الثاني يستبدل الأول. ضع كل الدوال في قيمة واحدة.
  • ظلال بشكل صندوق على أيقونات شفافة. استخدم filter: drop-shadow() بدل box-shadow.

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

كيف أموّه عنصرًا في CSS؟

استخدم filter: blur(5px);. الطول هو نصف قطر التمويه: 0 حاد، والقيم الأكبر أكثر تمويهًا. يموّه العنصر وكل ما بداخله، بما في ذلك نصه وصوره.

كيف أموّه الخلفية التي خلف عنصر؟

استخدم backdrop-filter: blur(10px); على العنصر، مع خلفية شفافة جزئيًا مثل rgb(255 255 255 / 0.5). يبقى محتوى العنصر نفسه حادًا ويُموَّه ما خلفه، وهذا هو تأثير الزجاج المصنفر.

ما الفرق بين drop-shadow() وbox-shadow؟

تتبع box-shadow دائمًا صندوق العنصر المستطيل. أما filter: drop-shadow() فتتبع الشكل المرئي، بما في ذلك المناطق الشفافة في صورة PNG أو SVG، فيكون ظل الأيقونة بحدود الأيقونة.

كيف أجعل صورة بالأبيض والأسود في CSS؟

استخدم filter: grayscale(100%); (أو grayscale(1)). أضف انتقالًا وfilter: grayscale(0) عند التمرير لإعادة الألوان.

هل يمكن استخدام عدة مرشحات معًا؟

نعم، اذكرها مفصولة بمسافات: filter: grayscale(1) brightness(1.2) blur(1px);. تُطبَّق بالترتيب، فقد يغيّر الترتيب النتيجة. وتصريح filter الثاني يستبدل الأول.

Coddy programming languages illustration

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

ابدأ الآن