ویژگی تصویر

افکت درخشان روی متن با CSS — راهنمای کامل و عملی

  /  CSS   /  افکت درخشان روی متن با CSS
بنر تبلیغاتی الف

افکت درخشان یا Glow روی متن یکی از جلوه‌های محبوب در طراحی وب است که می‌تواند به نوشته‌ها حس «نئونی» یا برجسته‌بودن بدهد. در این مقاله به روش‌های مختلف ساخت افکت درخشان با فقط CSS می‌پردازیم، مثال‌های عملی، نکات بهینه‌سازی و دسترسی (accessibility) را بررسی می‌کنیم و راهکارهای جایگزین و بهینه را معرفی می‌کنیم.

چرا از افکت درخشان استفاده کنیم؟

  • جلب توجه در عناوین، دکمه‌ها یا هِرویِجت‌ها
  • ایجاد رابط‌های بصری مدرن مانند تم‌های نئون یا سایبرپانک
  • تمایز بصری بدون استفاده از تصاویر

روش پایه: text-shadow

<h1 class="glow">Neon Text</h1>

.glow {
  color: #fff;
  text-shadow:
    0 0 5px rgba(255,255,255,0.8),
    0 0 10px rgba(0,150,255,0.8),
    0 0 20px rgba(0,150,255,0.6),
    0 0 40px rgba(0,150,255,0.4);
  font-size: 48px;
  text-align: center;
}

توضیح: این مثال ساده از ویژگی text-shadow برای ایجاد چند لایه سایه استفاده می‌کند. هر مقدار شامل فاصله افقی، فاصله عمودی، میزان بلور (blur) و رنگ است. تکرار چندین text-shadow با مقادیر متفاوت باعث ایجاد درخشش نرم و لایه‌ای می‌شود.

افزایش عمق: لایه‌های متعدد و رنگ‌های متنوع

.glow-multi {
  color: #fff;
  text-shadow:
    0 0 2px #fff,
    0 0 6px #7df9ff,
    0 0 14px #00bfff,
    0 0 30px #0066ff,
    0 0 60px rgba(0,102,255,0.5);
  font-weight: 700;
}

توضیح: اضافه‌کردن لایه‌های بیشتر و تغییر رنگ و میزان بلور باعث می‌شود درخشش طبیعی‌تر و عمیق‌تر دیده شود. لایه‌های کوچک‌تر (بلور کمتر) نزدیک متن قرار می‌گیرند و لایه‌های بزرگ‌تر حس پراکندگی نور را ایجاد می‌کنند.

روش پیشرفته: استفاده از pseudo-element و فیلتر blur

<h1 class="glow-pseudo">Glowing</h1>

.glow-pseudo {
  position: relative;
  color: #fff;
  font-size: 64px;
}

.glow-pseudo::before {
  content: attr(data-text);
  position: absolute;
  left: 0; top: 0;
  color: #00e6ff;
  filter: blur(8px);
  opacity: 0.8;
  z-index: -1;
}

توضیح: در این روش از یک ::before استفاده می‌کنیم تا یک نسخه محو و بلور شده از متن پشت متن اصلی قرار گیرد. این روش امکان کنترل جداگانه رنگ و شدت درخشندگی را فراهم می‌کند و برای ترکیب افکت‌ها (مثل glow و stroke) مفید است. توجه کنید که باید مقادیر موقعیت و z-index را درست تنظیم کنید.

انیمیشن درخشان: ایجاد افکت pulsate

.glow-anim {
  color: #fff;
  text-shadow: 0 0 8px #00bfff, 0 0 20px #00bfff;
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0% {
    text-shadow: 0 0 4px #00bfff, 0 0 12px #00bfff;
  }
  50% {
    text-shadow: 0 0 12px #00bfff, 0 0 40px #00bfff;
  }
  100% {
    text-shadow: 0 0 4px #00bfff, 0 0 12px #00bfff;
  }
}

توضیح: این مثال یک انیمیشن ساده تعریف می‌کند که میزان بلور و شدت سایه را در طول زمان تغییر می‌دهد و حس نفس‌زنی یا چشمک زدن نور را ایجاد می‌کند. برای جلوگیری از مصرف زیاد پردازنده، مدت زمان و مقادیر را متعادل انتخاب کنید.

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

  • text-shadow معمولاً سبک‌تر از استفاده از عناصر ماسک یا SVG است، اما سایه‌های سنگین و متعدد می‌تواند هزینه پردازشی داشته باشد.
  • برای عناصر متحرک، تا حد امکان از will-change: text-shadow استفاده نکنید مگر لازم باشد؛ این دستور می‌تواند حافظه را افزایش دهد.
  • فیلترها (مثل filter: blur()) اغلب پرهزینه‌تر هستند. از آن‌ها فقط هنگام نیاز استفاده کنید.

بهبود مثال: نسخه بهینه‌تر برای موبایل

.glow-optimized {
  color: #fff;
  text-shadow: 0 0 6px rgba(0,183,255,0.9), 0 0 18px rgba(0,183,255,0.6);
  font-size: 28px;
  /* کاهش پیچیدگی برای دستگاه‌های ضعیف */}

@media (min-width: 768px) {
  .glow-optimized { font-size: 48px; text-shadow: 0 0 8px rgba(0,183,255,0.95), 0 0 24px rgba(0,183,255,0.7), 0 0 48px rgba(0,183,255,0.4); }
}

توضیح: در این بهینه‌سازی، برای نمایشگرهای کوچک‌تر سایه‌ها را ساده‌تر و فونت را کوچکتر انتخاب می‌کنیم. با استفاده از مدیای کوئری می‌توانیم پیچیدگی را تنها در دستگاه‌هایی با توان پردازشی مناسب افزایش دهیم.

توجه به دسترسی: prefers-reduced-motion

@media (prefers-reduced-motion: reduce) {
  .glow-anim { animation: none; }
}

توضیح: برخی کاربران حساس به حرکت هستند. با استفاده از کوئری prefers-reduced-motion می‌توانیم انیمیشن‌ها را غیرفعال کنیم تا تجربه کاربری مناسب‌تری فراهم شود.

ترکیب background-clip برای افکت نئونی رنگی

.neon-text {
  font-size: 72px;
  background: linear-gradient(90deg, #00f, #0ff, #0f0);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 0 10px rgba(0,255,255,0.6), 0 0 30px rgba(0,150,255,0.4);
}

توضیح: با ترکیب background-clip: text و text-shadow می‌توان متن رنگی و درخشان ساخت. رنگ متن از پس‌زمینه گرادیان استخراج می‌شود و سایه‌ها در اطراف آن درخشندگی ایجاد می‌کنند. برای مرورگرهای قدیمی نیاز به پیش‌فرض رنگی باشد چون background-clip ممکن است پشتیبانی نشود.

مقایسه تکنیک‌ها — جدول راهنما

تکنیکپشتیبانیعملکردویژگی
text-shadowبسیار خوبخوبساده، قابل ترکیب
pseudo-element + blurخوبمتوسطکنترل بهتر رنگ/فشار نور
filter: blur()خوبپُرهزینهبلور واقعی، اما سنگین
background-clip: textخوب (به جز IE)خوبمتن رنگی با گرادیان + glow

نکات نهایی و بهترین شیوه‌ها

  • همیشه کنتراست رنگی را بررسی کنید تا متن قابل خواندن بماند.
  • در انیمیشن‌ها از قوانین دسترسی پیروی کنید و prefers-reduced-motion را لحاظ کنید.
  • برای عناصر پرتکرار یا لیست‌های طولانی از افکت‌های سبک‌تر استفاده کنید تا مصرف منابع کاهش یابد.
  • برای طراحی نئونی، رنگ‌های سرد (آبی، فیروزه‌ای) و گرم (صورتی، قرمز) را با هم مقایسه کنید؛ ترکیب مناسب با زمینه باعث جلوه بهتر می‌شود.

با استفاده از این تکنیک‌ها می‌توانید افکت‌های متنی درخشان و جذاب ایجاد کنید که هم زیبا و هم کاربردی باشند. امتحان کنید، مقادیر و رنگ‌ها را دست‌خوش تغییر کنید و همیشه روی تجربه کاربری و عملکرد تمرکز داشته باشید.

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

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