ویژگی تصویر

افکت فیلتر رنگ روی تصویر با CSS

  /  CSS   /  افکت فیلتر رنگ روی تصویر با 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 برای ساختن سیستم‌های قابل تنظیم و قابل سفارشی‌سازی استفاده کنید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: