ویژگی تصویر

افکت Blur برای پس‌زمینه با CSS — معرفی و کاربردها

  /  CSS   /  افکت Blur برای پس زمینه با CSS
بنر تبلیغاتی الف

افکت Blur (تاری) برای پس‌زمینه یکی از روش‌های محبوب در طراحی وب مدرن است که حس عمق، خوانایی و جلوه‌های شیشه‌مانند (frosted glass) را به رابط کاربری اضافه می‌کند. این افکت می‌تواند در هدرها، کارت‌ها، منوهای شناور و پنل‌های اطلاعاتی استفاده شود تا محتوای اصلی خواناتر و طراحی چشم‌نوازتر شود.

دو رویکرد اصلی

  • backdrop-filter: تاری روی محتوای پشت عنصر (همان “پشت‌زمینه واقعی” صفحه).
  • filter + عناصر تکراری: تاری روی یک تصویر یا لایه‌ای که به‌عنوان پس‌زمینهٔ عنصر قرار گرفته است (روش سازگارتر و قابل کنترل‌تر).

مثال: افکت Frosted Glass با backdrop-filter

.frosted {
  position: relative;
  background: rgba(255, 255, 255, 0.25); /* نیمه شفاف برای دیدن محتوای زیر */  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 4px 30px rgba(0,0,0,0.1);
}

توضیح: این کد یک کارت با پس‌زمینهٔ نیمه‌شفاف می‌سازد و با استفاده از backdrop-filter محتوای پشت آن را تار می‌کند. از پیشوند -webkit-backdrop-filter برای سازگاری بهتر با مرورگرهایی که هنوز نیازمند پیشوند هستند استفاده شده است.

نکات عملی درباره backdrop-filter

  • المنت باید دارای پس‌زمینه نیمه‌شفاف (مثلاً rgba) یا تصویری باشد تا اثر قابل مشاهده شود.
  • در بعضی مرورگرها نیاز به پیشوند -webkit- وجود دارد.
  • backdrop-filter روی المان‌هایی که overflow:hidden یا موقعیت خاص دارند بهتر عمل می‌کند؛ گاهی مقدار z-index و ساختار stacking context روی نتیجه تأثیر می‌گذارد.

روش جایگزین: استفاده از Pseudo-element و filter

.hero {
  position: relative;
  overflow: hidden;
}
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("bg.jpg");
  background-size: cover;
  background-position: center;
  filter: blur(8px);
  transform: scale(1.05); /* برای جلوگیری از لبه‌های شفاف */  z-index: 0;
}
.hero .content {
  position: relative;
  z-index: 1;
  color: white;
  padding: 40px;
}

توضیح: در این روش تصویر پس‌زمینه روی یک pseudo-element قرار می‌گیرد و با filter: blur() تار می‌شود. سپس محتوای اصلی به‌صورت مستقل روی آن قرار می‌گیرد. این روش در مرورگرهای بیشتری قابل استفاده و کنترل‌پذیر است و برای زمانی که backdrop-filter پشتیبانی نشود، مناسب است.

فـال‌بک (Fallback) و پشتیبانی مرورگرها

همیشه بهتر است برای مرورگرهایی که backdrop-filter را پشتیبانی نمی‌کنند، یک فال‌بک در نظر بگیرید. می‌توانید از @supports استفاده کنید تا ابتدا نسخهٔ عالی با backdrop-filter را اعمال کنید و اگر پشتیبانی نبود از نسخهٔ مبتنی بر pseudo-element یا یک پس‌زمینهٔ ثابت استفاده کنید.

@supports ((-webkit-backdrop-filter: blur(10px)) or (backdrop-filter: blur(10px))) {
  .panel { background: rgba(255,255,255,0.3); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
}
@supports not ((-webkit-backdrop-filter: blur(10px)) or (backdrop-filter: blur(10px))) {
  .panel { background: rgba(255,255,255,0.9); /* fallback ساده */ }
}

توضیح: این قطعه کد با @supports بررسی می‌کند آیا مرورگر از backdrop-filter پشتیبانی می‌کند یا نه. اگر پشتیبانی کند، افکت شیشه‌ای را اعمال می‌کند؛ در غیر این صورت یک پس‌زمینهٔ کمتر شفاف (یا هر fallback دلخواه) نمایش داده می‌شود.

عملکرد و بهینه‌سازی

افکت‌های Blur می‌توانند مصرف CPU/GPU بالایی داشته باشند، خصوصاً وقتی روی بخش‌های بزرگ صفحه یا با انیمیشن مکرر اعمال شوند. نکات بهینه‌سازی:

  • محدود کردن منطقه‌ای که تار می‌شود (از اعمال Blur روی کل صفحه خودداری کنید).
  • از animating blur در حلقه‌های پیوسته پرهیز کنید؛ اگر نیاز به انیمیشن دارید، از opacity یا transform استفاده کنید و فقط در صورت لزوم filter را تغییر دهید.
  • از will-change: filter با احتیاط استفاده کنید؛ این ویژگی به مرورگر اطلاع می‌دهد که ممکن است filter تغییر کند اما استفادهٔ بیش از حد حافظهٔ بیشتری مصرف می‌کند.
  • برای تصاویر پس‌زمینه بزرگ، از تصاویر بهینه شده و نسخه‌های فشرده استفاده کنید.

پیشنهادهای طراحی و دسترسی

  • کنتراست متن روی پس‌زمینهٔ تار را بررسی کنید تا خوانایی حفظ شود.
  • برای کاربران کم‌توان یا سخت‌افزار ضعیف، امکان غیرفعال کردن افکت در تنظیمات طراحی یا استفاده از prefers-reduced-motion و Media Query های مربوطه را در نظر بگیرید.
  • افکت‌ها نباید اطلاعات مهم را پنهان کنند؛ از Blur برای زیبایی و تاکید، نه برای مخفی‌سازی محتوا.

نمونهٔ جدول پشتیبانی مرورگر (خلاصه)

مرورگرحالت پشتیبانی
Safari (macOS / iOS)پشتیبانی کامل (پیشنهاد: از -webkit-backdrop-filter برای سازگاری)
Chrome / Edge (Chromium)پشتیبانی در نسخه‌های جدید؛ در برخی نسخه‌ها نیاز به پیشوند یا flag
Firefoxپشتیبانی محدود یا نیاز به تنظیمات کاربر در نسخه‌های قدیمی‌تر

نمونهٔ عملی ترکیبی — کارت اطلاعاتی با fallback

.card {
  position: relative;
  padding: 20px;
  border-radius: 12px;
  color: #111;
}

/* primary: backdrop-filter */@supports (backdrop-filter: blur(8px)) or (-webkit-backdrop-filter: blur(8px)) {
  .card {
    background: rgba(255,255,255,0.4);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    box-shadow: 0 6px 24px rgba(0,0,0,0.12);
  }
}

/* fallback: opaque bg یا pseudo-element blur */@supports not (backdrop-filter: blur(8px)) {
  .card {
    background: linear-gradient(180deg, rgba(255,255,255,0.95), rgba(255,255,255,0.9));
  }
}

توضیح: این مثال یک کارت اطلاعاتی ایجاد می‌کند که ابتدا سعی می‌کند از backdrop-filter برای افکت شیشه‌ای استفاده کند. اگر مرورگر از این ویژگی پشتیبانی نکند، یک پس‌زمینهٔ گرادیانت به عنوان fallback استفاده می‌شود تا طراحی هنوز معقول باقی بماند.

جمع‌بندی و بهترین شیوه‌ها

افکت Blur برای پس‌زمینه با CSS ابزاری قدرتمند برای ایجاد جلوه‌های مدرن و حرفه‌ای است. استفاده صحیح از backdrop-filter باعث تجربهٔ بصری عالی می‌شود، اما باید همیشه سازگاری مرورگرها، عملکرد و دسترسی را در نظر گرفت. برای حداکثر پوشش، از ترکیب تکنیک‌های مختلف (backdrop-filter، pseudo-elements، و fallbackها) استفاده کنید و از بهینه‌سازی‌های عملکردی غافل نشوید.

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

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