Ховер (hover) — CSS псеудокласа и визуелно стање елемента интерфејса које се активира при преласку курсора миша. Овај механизам обезбеђује повратну информацију кориснику, потврђујући да је елемент спреман за интеракцију. Према MDN Web Docs (2026), псеудокласа :hover је подржана у свим савременим прегледачима и један је од најчешће коришћених CSS селектора за креирање интерактивности.
Главно
Ховер (од енгл. hover — лебдети) — визуелна реакција елемента интерфејса на прелазак курсора миша. Термин се користи како за саму CSS псеудокласу :hover, тако и за стање елемента при преласку.
Концепт ховера појавио се у раним графичким интерфејсима Xerox Alto (1973) и стандардизован је на вебу са појавом CSS2 1998. године. Од тада, ховер је постао саставни део корисничког искуства на десктопу.
Према CSS Usage Statistics (2025), 94% сајтова у топ 1000 користи псеудокласу :hover барем за један елемент. Најчешће се ховер примењује на дугмад (89%), линкове (85%) и картице (62%).
Ховер ≠ active. :hover се активира при преласку, :active — у тренутку клика. :focus се активира при фокусу са тастатуре. Свако стање решава свој задатак. Ховер је преглед, active — потврда радње.
Псеудокласа :hover у CSS-у примењује стилове на елемент када корисник пређе курсором миша преко њега. Ради са било којим HTML елементом, али се најчешће користи са интерактивним елементима.
/* 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 — иста као класе (0,1,0). Ако треба да препишете ховер за одређени елемент, користите селектор са већом специфичношћу. Редослед декларација је важан: ако декларишете :hover после :focus, ховер можда неће радити при фокусу.
:hover се може комбиновати са другим псеудокласама за креирање сложене логике. На пример, .card:hover .card__title мења стил наслова унутар картице при преласку преко целе картице. Ово омогућава креирање ефеката са угњежденом анимацијом.
Ховер ефекти се деле у неколико категорија према типу особине која се мења. Сваки тип одговара различитим сценаријима и ствара одређени осећај код корисника.
| Тип ефекта | CSS особина | Пример примене |
|---|---|---|
| Боја | background, color | Дугме мења боју позадине при преласку |
| Сенка | box-shadow | Картица се подиже захваљујући сенци |
| Размера | transform: scale | Икона се увећава при преласку |
| Померање | transform: translate | Елемент се помера нагоре или у страну |
| Подвлачење | border-bottom, underline | Линк добија подвлачење одоздо |
| Филтер | filter: brightness | Слика постаје светлија или тамнија |
| Градијент | background-image | Позадина се мења при преласку |
Најефикаснији тип — комбинација ефекта боје и сенке. Material Design препоручује коришћење промене висине сенке као главног типа ховер повратне информације.
Према Google Material Design (2024), ховер ефекат треба да буде приметан, али не и ометајући. Препоручено трајање анимације — 200–300 милисекунди. Сувише брзи ефекти (мање од 100 ms) могу остати непримећени, сувише спори (више од 500 ms) иритирају корисника.
CSS особина transition чини ховер ефекте глаткима, анимирајући промену особина током времена. Без transition ховер делује тренутно, што изгледа трзаво и непријатно за око.
/* 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 зависи од контекста. За мале елементе (иконе, линкови) — 150–200 ms. За велике елементе (картице, модални прозори) — 250–350 ms. Easing функција ease-out глатко успорава анимацију при крају, стварајући природан осећај.
Препоручена пракса — наведите transition за сваку анимирану особину посебно. Особина all је згодна у фази развоја, али у продукцији је боље дефинисати конкретне особине за анимацију како би се избегли неочекивани ефекти.
На сензорним уређајима концепт ховера не постоји: нема курсора који би могао да пређе преко елемента. Додир елемента одмах активира click, прескачући ховер стање. Ово ствара проблеме ако се интерфејс ослања искључиво на ховер.
Према StatCounter (2026), 62% светског веб саобраћаја долази са мобилних уређаја. Игнорисати недостатак ховера на touch екранима значи изгубити контролу над UX за већину корисника.
/* Disable hover on touch devices */
@media (hover: none) and (pointer: coarse) {
.button:hover {
background: initial;
transform: none;
}
}
Медија упит hover: none омогућава да се утврди да уређај не подржава прелазак курсора. На таквим уређајима, ховер ефекти се искључују и интеракција се заснива на :active и :focus стањима. Алтернативно решење — приказивање ховер садржаја при додиру (први додир приказује ховер, други извршава акцију), али овај образац погоршава UX.
Приступачност ховера — критичан аспект који се често занемарује. Корисници који управљају интерфејсом са тастатуре не могу да активирају :hover. Функције доступне само преко ховера постају недоступне за њих.
Правило WCAG 2.2 (Success Criterion 1.4.13 — Content on Hover or Focus): садржај који се појављује при ховеру мора бити доступан и при фокусу. Ако ховер приказује додатне информације (tooltip, падајући мени), исте информације морају бити доступне при :focus.
/* 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 — поштујте системска подешавања корисника. Ако је корисник искључио анимацију у систему, ховер ефекти треба да се примењују тренутно, без transition. Ово помаже људима са вестибуларним поремећајима.
Додатне препоруке: не користите ховер за критичне функције, не користите само боју за преношење информација при ховеру (додајте икону или текст) и обезбедите довољан контраст за ховер стања.
Често постављана питања
:hover се активира при преласку миша преко елемента. :focus се активира када елемент добије фокус — при табулацији са тастатуре или после клика. За приступачност је важно дуплирати ховер ефекте кроз :focus.
На touch уређајима ховер ради нестабилно: први додир активира :hover, други — click. Ово ствара забуну. Препоручује се коришћење медија упита @media (hover: none) за искључивање ховер ефеката на сензорним екранима.
Користите догађаје mouseenter (прелазак) и mouseleave (одмицање курсора). За разлику од CSS ховера, JavaScript даје потпуну контролу над анимацијом и омогућава креирање сложених секвенцијалних ефеката са кашњењима.
iOS Safari има посебну обраду :hover. Након додира, елемент улази у стање :hover и остаје у њему до следећег додира. Ово може довести до лепљења ховер стилова. Решење — користите @media (hover: hover) да примењујете ховер само на уређајима који подржавају прелазак курсора.
ease-out (cubic-bezier(0, 0, 0.2, 1)) — оптималан избор за ховер: брз почетак и глатко успоравање на крају. ease-in-out је погодан за ефекте са две фазе (појављивање и нестајање). Избегавајте linear — изгледа неприродно.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође