ویژگی تصویر

ساخت افکت نوار نورانی با CSS

  /  CSS   /  ساخت افکت نوار نورانی با CSS
بنر تبلیغاتی الف

افکت نوار نورانی (neon/glowing strip) یکی از جلوه‌های بصری محبوب در طراحی وب است که می‌تواند توجه کاربر را جلب کند، حالت مدرن به رابط بدهد و برای هدرها، دکمه‌های برجسته یا جداکننده‌های صفحات کاربردی باشد. در این مقاله روش‌های مختلف پیاده‌سازی افکت نوار نورانی با CSS را از پایه تا نسخه‌های پیشرفته بررسی می‌کنیم و نکات عملکردی و قابلت دسترسی را نیز پوشش می‌دهیم.

مفاهیم پایه

  • box-shadow: برای ایجاد هاله نورانی اطراف عناصر.
  • gradient (linear-gradient / conic-gradient): برای ساخت رنگ‌های شیب‌دار که ظاهری نوری دارند.
  • pseudo-elements (::before, ::after): برای اضافه کردن لایه‌های نور بدون تغییر HTML.
  • filter: blur(): برای محو کردن نور و ساخت هاله.
  • animation: برای حرکت دادن یا پالس دادن نور.

روش ساده با box-shadow

.glow-line {
  width: 100%;
  height: 6px;
  background: #0b0b0b;
  border-radius: 4px;
  box-shadow: 0 0 8px rgba(0,255,200,0.8), 0 0 20px rgba(0,255,200,0.4);
}

کد بالا یک نوار ساده با هاله نور ایجاد می‌کند. box-shadow باعث می‌شود نور از داخل و اطراف نوار تابیده شود. این روش سبک و سازگار است اما کنترل رنگ و حرکت محدودتری دارد.

روش پیشرفته با pseudo-element و گرادیانت متحرک

.neon-strip {
  position: relative;
  width: 100%;
  height: 8px;
  background: #060608;
  border-radius: 6px;
  overflow: hidden;
}

.neon-strip::before {
  content: "";
  position: absolute;
  left: -50%;
  top: 0;
  height: 100%;
  width: 200%;
  background: linear-gradient(90deg,
    rgba(0,255,255,0) 0%,
    rgba(0,255,255,0.9) 20%,
    rgba(255,0,255,0.9) 50%,
    rgba(0,255,255,0.9) 80%,
    rgba(0,255,255,0) 100%);
  filter: blur(8px);
  transform: translateX(0);
  animation: slide 3s linear infinite;
  mix-blend-mode: screen;
}

@keyframes slide {
  from { transform: translateX(0); }
  to { transform: translateX(50%); }
}

در این نمونه، از ::before برای لایه نوری استفاده شده تا خود نوار ثابت بماند و گرادیانت متحرک روی آن حرکت کند. filter: blur() هاله را نرم می‌کند و mix-blend-mode: screen باعث ترکیب رنگ جذاب‌تر با پس‌زمینه می‌شود. با تغییر طول انیمیشن یا زاویه گرادیانت می‌توانید تمپو و جهت نور را تغییر دهید.

نمونه‌ای با چند رنگ و پالس

.neon-pulse {
  position: relative;
  width: 320px;
  height: 10px;
  background: #030305;
  border-radius: 10px;
  overflow: visible;
}

.neon-pulse::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -6px;
  height: 22px;
  background: linear-gradient(90deg, #00ffd5, #ff00ff, #00aaff);
  filter: blur(6px);
  opacity: 0.9;
  transform-origin: center;
  animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
  0%, 100% { transform: scaleX(0.95); opacity: 0.8; }
  50% { transform: scaleX(1.05); opacity: 1; }
}

در این نسخه از ::after با انیمیشن پالس استفاده شده تا شدت نور به‌صورت متناوب افزایش و کاهش یابد. این تکنیک برای جلب توجه به المان‌های تعاملی مانند دکمه‌ها مناسب است.

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

  • فیلترها و blur می‌توانند هزینه پردازشی داشته باشند؛ در صفحات با تعداد بالای افکت، از سایه‌های ساده‌تر استفاده کنید یا انیمیشن را کاهش دهید.
  • استفاده از transform برای انیمیشن‌ها نسبت به تغییر موقعیت‌های مبتنی بر left/right یا top/bottom کاراتر است (از compositing GPU بهره می‌برد).
  • برای سازگاری، تست روی مرورگرهای موبایل و دسکتاپ انجام دهید؛ بعضی از blend-modeها در مرورگرهای قدیمی پشتیبانی نشود.

قابلیت دسترسی (Accessibility)

  • اگر افکت برای عنصر تعاملی (مثل دکمه) به‌عنوان نشان وضعیت مهم است، از aria-attributes برای انتقال اطلاعات به اسکرین‌ریدرها استفاده کنید.
  • افکت‌های متحرک ممکن است برای برخی کاربران ایجاد ناراحتی کنند؛ گزینه‌ای برای غیرفعال کردن انیمیشن‌ها با prefers-reduced-motion در CSS بگنجانید.
@media (prefers-reduced-motion: reduce) {
  .neon-strip::before,
  .neon-pulse::after {
    animation: none;
    transform: none;
    filter: none;
    opacity: 0.9;
  }
}

کد بالا انیمیشن را برای کاربرانی که حرکت کمتر را ترجیح می‌دهند خاموش می‌کند؛ این بهترین شیوه برای دسترسی‌پذیری است.

مقایسه روش‌ها

روشمزیتمعایب
box-shadowساده و سازگارکنترل محدود و ظاهری ثابت
pseudo-element + gradientقابلیت حرکت و رنگ‌های پیچیدههزینه پردازشی بیشتر با blur/filters
animated gradientsجذاب و پویاممکن است برای برخی کاربران حواس‌پرت‌کن باشد

مثال‌های کاربردی

  • نوار جداکننده بین بخش‌ها در صفحۀ فرود (landing page).
  • هشدار یا اعلان مهم با نور متحرک برای جلب توجه.
  • دکمه‌های CTA که با نوار نورانی برجسته شده‌اند.
  • لوگوی سایت یا هدر با نوار نوری زیرین برای استایل مدرن.

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

افکت نوار نورانی با CSS می‌تواند به سادگی با box-shadow یا قدرتمندتر باگرادیانت و pseudo-elementها پیاده‌سازی شود. انتخاب روش بستگی به نیاز طراحی، عملکرد موردنظر و حساسیت کاربرانتان دارد. همیشه به دسترسی و عملکرد توجه کنید و برای کاربران با ترجیح کاهش حرکت احترام قائل شوید.

اگر می‌خواهید نمونه‌ای از کد را برای پروژه خاصتان تنظیم کنم (ابعاد، رنگ، سرعت یا نوع انیمیشن)، مشخصات را بفرستید تا نمونه اختصاصی آماده کنم.

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

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