افکت 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ها) استفاده کنید و از بهینهسازیهای عملکردی غافل نشوید.
آیا این مطلب برای شما مفید بود ؟




