ساخت نوار اطلاعرسانی با CSS
نوار اطلاعرسانی (notification bar یا announcement bar) یکی از المانهای ساده اما مؤثر در طراحی وب است. از اعلانهای فوری، تخفیفها، هشدارهای مهم یا اطلاعرسانیهای سرویسدهی تا فراخوانهای اقدام (CTA)، این نوارها در بالای یا پایین صفحه کاربران را سریعاً در جریان قرار میدهند. در این مقاله به روشهای عملی، کد نمونه، نکات دسترسپذیری و بهینهسازی برای سئو میپردازیم.
چرا از نوار اطلاعرسانی استفاده کنیم؟
- جلب توجه سریع بدون مزاحمت زیاد برای کاربر.
- افزایش نرخ کلیک روی پیامهای مهم یا کمپینها.
- قابل استفاده برای پیامهای سرویس (سرویسدهی، قطعی) و بازاریابی.
- قابلیت سفارشیسازی و واکنشگرایی با CSS ساده.
مثال پایه: نوار ثابت در بالا (HTML + CSS)
<div class="notif-bar">
<div class="container">
<span>ارسال رایگان برای سفارشهای بالای ۱۰۰ هزار تومان</span>
<a href="/offers" class="cta">مشاهده پیشنهاد</a>
</div>
</div>
/* CSS */.notif-bar{
position:fixed;
top:0;
left:0;
right:0;
background:#0b74de;
color:#fff;
font-weight:600;
z-index:1000;
box-shadow:0 2px 6px rgba(0,0,0,0.1);
}
.notif-bar .container{
max-width:1100px;
margin:0 auto;
padding:10px 16px;
display:flex;
align-items:center;
justify-content:space-between;
}
.notif-bar .cta{
background:#fff;
color:#0b74de;
padding:8px 12px;
border-radius:4px;
text-decoration:none;
}این کد یک نوار ساده و ثابت در بالا ایجاد میکند. عرض کامل صفحه را پوشش میدهد و شامل متن و دکمه فراخوان است. از z-index بالا برای جلو آوردن نوار نسبت به سایر عناصر استفاده شده است.
نسخه قابل بستن فقط با CSS (checkbox hack)
<input type="checkbox" id="notif-close" class="notif-toggle">
<label for="notif-close" class="notif-bar">
<span>سیستم در حال بروزرسانی است — احتمال اختلال موقت</span>
<span class="close">✕</span>
</label>
/* CSS */.notif-toggle{ display:none; }
.notif-bar{
position:fixed; top:0; left:0; right:0;
background:#f39c12; color:#111;
padding:10px 16px; z-index:1000;
transition:transform .35s ease;
}
.notif-bar .close{ cursor:pointer; margin-left:12px; font-weight:700; }
.notif-toggle:checked + .notif-bar{
transform:translateY(-120%);
}در این روش از یک input از نوع checkbox مخفی استفاده شده و با کلیک روی برچسب (label) وضعیت checked تغییر میکند. سلکتور CSS مرتبط باعث جابهجایی نوار به بالا و مخفی شدن آن میشود. این راهحل بدون جاوااسکریپت کار میکند اما محدودیتهایی در دسترسپذیری دارد. برای مثال، برخی خوانندههای صفحه ممکن است رفتار label را متفاوت تفسیر کنند.
نسخه دسترسپذیر و قابل کنترل با JavaScript
<div class="notif-bar" role="region" aria-label="Site announcement" id="site-notif">
<span>تا پایان هفته، تخفیف ویژه ۲۰٪ روی همه محصولات</span>
<button class="close-btn" aria-label="Dismiss notification">×</button>
</div>
/* JavaScript */document.querySelector('.close-btn').addEventListener('click', function(){
const bar = document.getElementById('site-notif');
bar.setAttribute('aria-hidden','true');
bar.style.transform = 'translateY(-120%)';
setTimeout(()=> bar.remove(), 400);
});این نسخه از آرایه ARIA و یک دکمه واقعی استفاده میکند که برای صفحهخوانها و کاربرانی با کیبورد قابل دسترس است. جاوااسکریپت بهصورت نرم نوار را پنهان کرده و سپس از DOM حذف میکند تا از بارگذاری مجدد ناخواسته جلوگیری شود.
مقایسه روشها
| روش | مزایا | معایب |
|---|---|---|
| ساده CSS ثابت | بدون JS، سبک و سریع | عدم امکان بستن یا تعامل پیشرفته |
| CSS-only (checkbox) | بدون JS، امکان بستن | مسائل دسترسپذیری و رفتار متفاوت در مرورگرها |
| JS + ARIA | دسترسپذیر، انعطافپذیر | وابستگی به جاوااسکریپت |
نکات طراحی و بهینهسازی
- رنگ و کنتراست: متن نوار باید کنتراست کافی داشته باشد (AA یا AAA) تا قابل خواندن باشد.
- واکنشگرایی: در موبایل فضای داخلی (padding) را کمتر و متن را کوتاهتر کنید.
- سرعت بارگذاری: از CSS ساده و کم حجم استفاده کنید و از فونتهای بزرگ در نوار پرهیز کنید.
- SEO و تجربه کاربری: نوار نباید محتوای اصلی صفحه را پنهان کند؛ برای موتورهای جستجو بهجای مخفی کردن متن مهم، از rel=”canonical” یا structured data استفاده کنید.
- مدیریت وضعیت: اگر نوار باید فقط یکبار نمایش داده شود، از localStorage برای ذخیره وضعیت بستن استفاده کنید.
نمونه بهبود: ذخیره وضعیت بستن در localStorage
const btn = document.querySelector('.close-btn');
const bar = document.getElementById('site-notif');
if(!localStorage.getItem('notifClosed')){
bar.style.display = 'flex';
}
btn.addEventListener('click', () => {
bar.style.display = 'none';
localStorage.setItem('notifClosed','true');
});این اسکریپت ساده به کاربر اجازه میدهد پس از بستن نوار، در بازدیدهای بعدی وجود نداشته باشد. با این روش تجربه کاربری بهتری ارائه میدهید و از آزار کاربر جلوگیری میشود.
نتیجهگیری و پیشنهادات حرفهای
نوار اطلاعرسانی با CSS ابزاری سریع و مؤثر برای انتقال پیامهای مهم است. برای تولید نسخهی حرفهای:
- از نسخه دسترسپذیر با دکمه واقعی و ARIA استفاده کنید.
- برای رفتار بدون JS، از تکنیکهای CSS-only آگاهانه بهره ببرید ولی تستهای دسترسپذیری را فراموش نکنید.
- پیشنهاد میشود برای کنترلهای بیشتر مانند زمانبندی نمایش یا تست A/B از جاوااسکریپت و ذخیرهسازی محلی استفاده کنید.
با رعایت نکات فوق میتوانید نوارهای اطلاعرسانی زیبا، سریع، دسترسپذیر و کماختلال بسازید که هم کاربران و هم موتورهای جستجو را راضی نگه دارند.
آیا این مطلب برای شما مفید بود ؟




