افکت فیلتر رنگ روی تصویر با CSS
استفاده از فیلتر رنگ روی تصاویر یکی از سریعترین و قدرتمندترین روشها برای تغییر ظاهر تصاویر در وب است. با خواص CSS مثل filter، mix-blend-mode و ترکیب با pseudo-elementها و SVG، میتوان افکتهای حرفهای مانند سیاهوسفید، دوتون (duotone)، فروکافت (blur) و چرخش رنگ (hue-rotate) را بدون نیاز به ویرایشگر عکس ایجاد کرد.
چرا از CSS Filter استفاده کنیم؟
- سریع و قابل تغییر در لحظه (dynamic) — مناسب برای حالتهای hover و انیمیشن.
- کاهش وابستگی به فایلهای تصویر متعدد و حجم سرور.
- قابل ترکیب با تکنیکهای دیگر مانند blend modes و SVG برای افکتهای پیچیدهتر.
توابع اصلی filter و توضیحات
| تابع | توضیح | محدوده معمول |
|---|---|---|
| grayscale() | تبدیل تصویر به سیاهوسفید جزئی یا کامل | 0 — 1 |
| sepia() | دادن ظاهر قهوهای/نوستالژیک | 0 — 1 |
| saturate() | اشباع رنگ | 0 — (بیش از 1 برای افزایش) |
| hue-rotate() | چرخش طیف رنگی | deg (مثلاً 0deg — 360deg) |
| invert() | معکوس کردن رنگها | 0 — 1 |
| brightness() | روشنایی تصویر | 0 — (بیش از 1 برای روشنتر) |
| contrast() | کنتراست تصویر | 0 — (بیش از 1 برای افزایش) |
| blur() | مات کردن تصویر (فوکوس) | px (مثلاً 0px — 10px) |
مثال پایه: اعمال فیلتر روی تگ img
img {
filter: grayscale(0.6) contrast(1.2);
transition: filter 0.3s ease;
}
img:hover {
filter: grayscale(0) contrast(1);
}در این مثال، تصویر در حالت عادی 60% سیاهوسفید و کمی کنتراست دارد. با هاور فیلتر به حالت طبیعی بازمیگردد. از transition برای جابجایی نرم بین حالات استفاده شده است.
بهبود: انیمیشن چرخش رنگ (Hue Rotate)
.hue-animate {
filter: hue-rotate(0deg);
transition: filter 0.6s linear;
}
.hue-animate:hover {
filter: hue-rotate(180deg);
}
/* یا انیمیشن پیوسته */@keyframes hueLoop {
from { filter: hue-rotate(0deg); }
to { filter: hue-rotate(360deg); }
}
.hue-loop {
animation: hueLoop 6s linear infinite;
}کلاس اول هنگام هاور رنگها را میچرخاند. نمونه دوم یک انیمیشن پیوسته ایجاد میکند. توجه کنید که برای کاربران با تنظیم “prefers-reduced-motion” باید انیمیشنها غیرفعال شوند تا تجربه دسترسی بهتر باشد.
افکتهای پیشرفته: Duotone با SVG + CSS
/* HTML:
<img class="duotone" src="photo.jpg" alt="" />
CSS:
.duotone { filter: url(#duotone); }این نمونه از فیلتر SVG با feColorMatrix استفاده میکند تا ماتریس رنگی را اعمال کند و نتیجهی “دوتون” یا حالتی مشابه را بسازد. مزیت SVG این است که کنترل دقیقتری روی تبدیل کانالهای رنگی میدهد — مناسب زمانی که بخواهید رنگها را به شکل حرفهایتر تغییر دهید.
ترکیب با pseudo-element و mix-blend-mode
.overlay {
position: relative;
}
.overlay::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(135deg, rgba(255,100,100,0.6), rgba(50,150,255,0.6));
mix-blend-mode: multiply;
pointer-events: none;
}در این روش یک لایه رنگی نیمهشفاف روی تصویر قرار میدهیم و با mix-blend-mode: multiply ترکیب رنگها و افکت دلخواه ایجاد میشود. این تکنیک برای ساخت ظاهر برند محور یا دوتون سریع بسیار کاربردی است.
مثال کامل: تصویر با فیلتر و overlay
.card img {
display: block;
width: 100%;
height: auto;
filter: saturate(1.2) contrast(1.05);
}
.card .overlay::after { mix-blend-mode: overlay; }در این حالت تصویر ابتدا کمی اشباع و کنتراست میگیرد و سپس لایهی overlay با blend mode نهایی را شکل میدهد. با این ترکیب میتوانید تصاویر متنمحور یا محصولات را برجسته کنید.
نکات عملکردی و دسترسی
- فیلترها روی GPU اجرا میشوند اما استفاده مفرط (مثلاً blur سنگین یا انیمیشنهای پیدرپی) میتواند به افت فریم منجر شود. تست روی دستگاههای ضعیف ضروری است.
- برای پشتیبانی بهتر مرورگرها از پیشوند
-webkit-filterدر صورت نیاز استفاده کنید، اگرچه اکثر مرورگرهای جدید نیازی ندارند. - برای کاربران با نیازهای ویژه، از
@media (prefers-reduced-motion: reduce)استفاده کنید تا انیمیشنها غیرفعال شوند. - فیلترها روی تصاویر ریسپانسیو نیز کار میکنند؛ اما توجه کنید که وقتی تصاویر با background-image استفاده میشوند، باید روی همان عنصر اعمال کنید.
موارد استفاده رایج (Use Cases)
- نمایش کتابها یا محصولات با حالت «مات و در دسترس» تا وقتی انتخاب نشدهاند.
- تغییر تم بصری صفحه با یک کلاس — مثلاً تم تاریک یا تم برند.
- انیمیشنهای تمرکز کاربر در گالریهای تصویری.
- ایجاد افکت دوتون یا اورلی برای تبلیغات و بنرها بدون تولید فایل جدید.
خلاصه و بهترین روشها
فیلتر رنگ در CSS ابزاری منعطف و قدرتمند است که با چند خط کد میتوان جلوههای بصری چشمگیری ایجاد کرد. با ترکیب با SVG، pseudo-elementها و blend modes میتوان افکتهای پیچیدهتر و قابل کنترلتری ایجاد کرد. همیشه عملکرد و دسترسی را در نظر بگیرید و از متغیرهای CSS برای ساختن سیستمهای قابل تنظیم و قابل سفارشیسازی استفاده کنید.
آیا این مطلب برای شما مفید بود ؟




