هاور در رابط‌ها: چیست، انواع افکت‌ها و پیاده‌سازی

نویسنده: IT Sectr منتشر شده: 2026-08-03 زمان مطالعه: 6 دقیقه

هاور (hover) — یک شبه‌کلاس CSS و حالت بصری المان رابط است که با بردن نشانگر ماوس روی آن فعال می‌شود. این مکانیزم بازخوردی به کاربر ارائه می‌دهد و تأیید می‌کند که المان آماده تعامل است. طبق MDN Web Docs (2026)، شبه‌کلاس :hover توسط تمام مرورگرهای مدرن پشتیبانی می‌شود و یکی از پرکاربردترین انتخاب‌گرهای CSS برای ایجاد تعامل است.

مهم‌ترین نکات

  • هاور — شبه‌کلاس CSS :hover که با بردن نشانگر ماوس روی المان فعال می‌شود
  • بازخورد — هاور تأیید می‌کند که المان تعاملی و آماده کلیک است
  • انتقال‌های CSS — transition به افکت‌های hover نرمی می‌بخشد و درک را بهبود می‌دهد
  • دستگاه‌های لمسی — در صفحه‌نمایش‌های موبایل هاور وجود ندارد و نیاز به پیاده‌سازی جایگزین است
  • انواع افکت‌ها — تغییر رنگ، سایه، مقیاس، پس‌زمینه، حاشیه و متن

هاور در طراحی وب چیست

هاور (از انگلیسی hover — معلق بودن) — واکنش بصری المان رابط به بردن نشانگر ماوس روی آن. این اصطلاح هم برای اشاره به خود شبه‌کلاس :hover در CSS و هم برای وضعیت المان هنگام نشانه‌روی استفاده می‌شود.

مفهوم هاور در رابط‌های گرافیکی اولیه Xerox Alto (1973) ظاهر شد و با ظهور CSS2 در سال 1998 در وب استاندارد شد. از آن زمان هاور به بخشی جدایی‌ناپذیر از تجربه کاربری در رایانه‌های رومیزی تبدیل شد.

طبق CSS Usage Statistics (2025)، ۹۴٪ از سایت‌های برتر ۱۰۰۰ حداقل برای یک المان از شبه‌کلاس :hover استفاده می‌کنند. هاور بیشتر برای دکمه‌ها (۸۹٪)، پیوندها (۸۵٪) و کارت‌ها (۶۲٪) استفاده می‌شود.

تفاوت هاور با سایر حالت‌ها

هاور ≠ active. :hover با نشانه‌روی، :active در لحظه کلیک فعال می‌شود. :focus با تمرکز از طریق صفحه‌کلید فعال می‌شود. هر حالت وظیفه خود را حل می‌کند. هاور پیش‌نمایش است، active تأیید عمل است.

شبه‌کلاس :hover در CSS

شبه‌کلاس :hover در CSS زمانی که کاربر نشانگر ماوس را روی المان می‌برد، استایل‌هایی به آن اعمال می‌کند. با هر المان HTML کار می‌کند، اما بیشتر با المان‌های تعاملی استفاده می‌شود.

css
/* Basic hover implementation */
.button {
    background: #4A90D9;
    color: white;
    padding: 12px 24px;
    border: none;
    transition: all 0.3s ease;
}

.button:hover {
    background: #357ABD;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(74,144,217,0.4);
}

ویژگی انتخاب‌گر :hover مانند کلاس است (۱,۰,۰). اگر نیاز به بازنویسی هاور برای یک المان خاص دارید، از انتخاب‌گری با ویژگی بالاتر استفاده کنید. ترتیب اعلام مهم است: اگر :hover بعد از :focus اعلام شود، هاور ممکن است در حالت تمرکز کار نکند.

شبه‌کلاس‌های ترکیبی

:hover را می‌توان با شبه‌کلاس‌های دیگر ترکیب کرد برای ایجاد منطق پیچیده. مثلاً .card:hover .card__title استایل عنوان داخل کارت را با نشانه‌روی روی کل کارت تغییر می‌دهد. این امکان ایجاد افکت‌های با انیمیشن تو در تو را فراهم می‌کند.

انواع افکت‌های hover

افکت‌های hover بر اساس نوع ویژگی تغییر داده شده به چند دسته تقسیم می‌شوند. هر نوع برای سناریوهای خاصی مناسب است و احساس خاصی در کاربر ایجاد می‌کند.

نوع افکتویژگی CSSمثال کاربرد
رنگیbackground, colorدکمه با نشانه‌روی رنگ پس‌زمینه را تغییر می‌دهد
سایهbox-shadowکارت با سایه بالا می‌آید
مقیاسtransform: scaleآیکون با نشانه‌روی بزرگ می‌شود
جابه‌جاییtransform: translateالمان به بالا یا کنار جابه‌جا می‌شود
خط زیرborder-bottom, underlineپیوند از پایین خط می‌گیرد
فیلترfilter: brightnessتصویر روشن‌تر یا تیره‌تر می‌شود
گرادینتbackground-imageپس‌زمینه با نشانه‌روی تغییر می‌کند

موثرترین نوع — ترکیب افکت رنگی و سایه. Material Design استفاده از تغییر ارتفاع سایه را به عنوان نوع اصلی بازخورد hover توصیه می‌کند.

طبق Google Material Design (2024)، افکت hover باید قابل توجه باشد اما حواس‌پرت‌کننده نباشد. مدت زمان پیشنهادی انیمیشن ۲۰۰–۳۰۰ میلی‌ثانیه است. افکت‌های خیلی سریع (کمتر از ۱۰۰ میلی‌ثانیه) ممکن است دیده نشوند، خیلی کند (بیش از ۵۰۰ میلی‌ثانیه) کاربر را آزار می‌دهند.

انتقال‌های CSS برای افکت‌های نرم

ویژگی transition در CSS افکت‌های hover را نرم می‌کند و تغییر ویژگی‌ها را در طول زمان انیمیشن می‌کند. بدون transition هاور فوری عمل می‌کند که برای چشم ناخوشایند است.

css
/* Different transitions per property */
.card {
    transition:
        box-shadow 0.3s ease-out,
        transform 0.2s ease-out,
        background 0.15s linear;
}

.card:hover {
    box-shadow: 0 8px 30px rgba(0,0,0,0.15);
    transform: translateY(-4px);
}

مدت transition به بافت بستگی دارد. برای المان‌های کوچک (آیکون‌ها، پیوندها) — ۱۵۰–۲۰۰ میلی‌ثانیه. برای المان‌های بزرگ (کارت‌ها، پنجره‌های مودال) — ۲۵۰–۳۵۰ میلی‌ثانیه. تابع easing ease-out انیمیشن را به آرامی در انتها کند می‌کند و حس طبیعی ایجاد می‌کند.

روش پیشنهادی — transition را برای هر ویژگی متحرک جداگانه مشخص کنید. ویژگی all در مرحله توسعه راحت است، اما در تولید بهتر است ویژگی‌های خاص برای انیمیشن تعریف شوند تا از افکت‌های غیرمنتظره جلوگیری شود.

هاور در دستگاه‌های لمسی

در دستگاه‌های لمسی مفهوم هاور وجود ندارد: هیچ نشانگری برای بردن روی المان نیست. لمس المان بلافاصله click را فعال می‌کند و حالت هاور را نادیده می‌گیرد. این مشکل‌ساز می‌شود اگر رابط کاربری صرفاً به هاور متکی باشد.

طبق StatCounter (2026)، ۶۲٪ از ترافیک وب جهانی از دستگاه‌های موبایل است. نادیده گرفتن نبود هاور در صفحه‌نمایش‌های لمسی یعنی از دست دادن کنترل بر UX برای اکثر کاربران.

css
/* Disable hover on touch devices */
@media (hover: none) and (pointer: coarse) {
    .button:hover {
        background: initial;
        transform: none;
    }
}

درخواست رسانه‌ای hover: none امکان تشخیص دستگاه‌هایی که نشانه‌روی را پشتیبانی نمی‌کنند فراهم می‌کند. در چنین دستگاه‌هایی افکت‌های hover غیرفعال شده و تعامل بر اساس حالت‌های :active و :focus انجام می‌شود. راه‌حل جایگزین — نمایش محتوای hover با لمس (لمس اول هاور را نشان می‌دهد، لمس دوم عمل را انجام می‌دهد)، اما این الگو UX را بدتر می‌کند.

دسترسی‌پذیری افکت‌های hover

دسترسی‌پذیری هاور — جنبه حیاتی که اغلب نادیده گرفته می‌شود. کاربرانی که رابط را با صفحه‌کلید کنترل می‌کنند نمی‌توانند :hover را فعال کنند. کارکردهایی که فقط از طریق هاور در دسترس هستند برای آن‌ها غیرقابل دسترس می‌شود.

قانون WCAG 2.2 (معیار موفقیت ۱.۴.۱۳ — محتوا در هاور یا تمرکز): محتوایی که با هاور ظاهر می‌شود باید در حالت تمرکز نیز در دسترس باشد. اگر هاور اطلاعات اضافی (راهنما، منوی کشویی) نشان می‌دهد، همان اطلاعات باید با :focus در دسترس باشد.

css
/* Hover + focus for accessibility */
.tooltip-trigger:hover .tooltip,
.tooltip-trigger:focus .tooltip {
    opacity: 1;
    visibility: visible;
}

/* Disable animation for vestibular disorder */
@media (prefers-reduced-motion: reduce) {
    *:hover {
        transition: none;
    }
}

درخواست رسانه‌ای prefers-reduced-motion — به تنظیمات سیستمی کاربران احترام بگذارید. اگر کاربر انیمیشن را در سیستم غیرفعال کرده است، افکت‌های hover باید فوری و بدون transition اعمال شوند. این به افراد با اختلالات دهلیزی کمک می‌کند.

توصیه‌های اضافی: از هاور برای کارکردهای حیاتی استفاده نکنید، فقط از رنگ برای انتقال اطلاعات در هاور استفاده نکنید (آیکون یا متن اضافه کنید) و تضاد کافی برای حالت‌های hover فراهم کنید.

سوالات متداول

تفاوت بین :hover و :focus در CSS چیست؟

:hover با بردن ماوس روی المان فعال می‌شود. :focus وقتی المان تمرکز می‌گیرد فعال می‌شود — با تب از صفحه‌کلید یا پس از کلیک. برای دسترسی‌پذیری مهم است که افکت‌های hover از طریق :focus تکرار شوند.

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

در دستگاه‌های لمسی هاور ناپایدار کار می‌کند: لمس اول :hover را فعال می‌کند، دومی — click را. این باعث سردرگمی می‌شود. توصیه می‌شود از درخواست رسانه‌ای @media (hover: none) برای غیرفعال کردن افکت‌های hover در صفحه‌نمایش‌های لمسی استفاده کنید.

چگونه افکت hover را در JavaScript ایجاد کنیم؟

از رویدادهای mouseenter (نشانه‌روی) و mouseleave (بردن نشانگر) استفاده کنید. برخلاف هاور CSS، JavaScript کنترل کامل روی انیمیشن را می‌دهد و امکان ایجاد افکت‌های متوالی پیچیده با تأخیر را فراهم می‌کند.

چرا هاور در Safari موبایل کار نمی‌کند؟

iOS Safari پردازش خاصی برای :hover دارد. پس از لمس، المان وارد حالت :hover می‌شود و تا لمس بعدی در آن می‌ماند. این می‌تواند به چسبیدن استایل‌های hover منجر شود. راه‌حل — استفاده از @media (hover: hover) برای اعمال هاور فقط در دستگاه‌های دارای قابلیت نشانه‌روی.

کدام easing برای افکت‌های hover مناسب‌تر است؟

ease-out (cubic-bezier(0, 0, 0.2, 1)) — انتخاب بهینه برای هاور: شروع سریع و کاهش تدریجی در انتها. ease-in-out برای افکت‌های دو فاز (ظهور و ناپدید شدن) مناسب است. از linear خودداری کنید — غیرطبیعی به نظر می‌رسد.

خلاصه

  • هاور — شبه‌کلاس CSS :hover که با نشانه‌روی ماوس روی المان بازخورد می‌دهد
  • افکت‌های اصلی — تغییر رنگ، سایه، مقیاس، جابه‌جایی، خط زیر و فیلترها
  • انتقال‌های CSS — transition با مدت زمان بهینه ۲۰۰–۳۰۰ میلی‌ثانیه نرمی می‌بخشد
  • دستگاه‌های لمسی — هاور را پشتیبانی نمی‌کنند، از @media (hover: none) استفاده کنید
  • دسترسی‌پذیری — هاور را از طریق :focus تکرار کنید، به prefers-reduced-motion احترام بگذارید
  • بهترین روش — ترکیب افکت رنگی و سایه با ease-out به مدت ۲۵۰ میلی‌ثانیه

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید