Hover v rozhraních: co to je, typy efektů a implementace

Autor: IT Sectr Publikováno: 2026-08-03 Doba čtení: 6 min

Hover (hover) — je CSS pseudotřída a vizuální stav prvku rozhraní, který se aktivuje při najetí kurzoru myši. Tento mechanismus poskytuje uživateli zpětnou vazbu a potvrzuje, že prvek je připraven k interakci. Podle MDN Web Docs (2026) je pseudotřída :hover podporována všemi moderními prohlížeči a je jedním z nejpoužívanějších CSS selektorů pro vytváření interaktivity.

Hlavní body

  • Hover — CSS pseudotřída :hover, aktivovaná při najetí kurzoru myši na prvek
  • Zpětná vazba — hover potvrzuje, že prvek je interaktivní a připravený ke kliknutí
  • CSS přechody — transition přidává plynulost hover efektům, zlepšuje vnímání
  • Dotyková zařízení — na mobilních obrazovkách hover chybí, je vyžadována alternativní implementace
  • Typy efektů — změna barvy, stínu, měřítka, pozadí, okraje a textu

Co je hover v webdesignu

Hover (z anglického hover — vznášet se) — vizuální reakce prvku rozhraní na najetí kurzoru myši. Termín se používá jak pro samotnou CSS pseudotřídu :hover, tak pro stav prvku při najetí.

Koncepce hoveru se objevila v raných grafických rozhraních Xerox Alto (1973) a byla standardizována na webu s příchodem CSS2 v roce 1998. Od té doby se hover stal nedílnou součástí uživatelského zážitku na desktopu.

Podle CSS Usage Statistics (2025) používá 94 % webů v top 1000 pseudotřídu :hover alespoň pro jeden prvek. Hover se nejčastěji aplikuje na tlačítka (89 %), odkazy (85 %) a karty (62 %).

Rozdíl mezi hoverem a jinými stavy

Hover ≠ active. :hover se aktivuje při najetí, :active — v okamžiku kliknutí. :focus se aktivuje při fokusu z klávesnice. Každý stav řeší svůj úkol. Hover je náhled, active je potvrzení akce.

Pseudotřída :hover v CSS

Pseudotřída :hover v CSS aplikuje styly na prvek, když uživatel najede kurzorem myši na něj. Funguje s libovolným HTML prvkem, ale nejčastěji se používá s interaktivními prvky.

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);
}

Specifičnost selektoru :hover — stejná jako třídy (0,1,0). Pokud potřebujete přepsat hover pro konkrétní prvek, použijte selektor s vyšší specifičností. Pořadí deklarací je důležité: pokud deklarujete :hover po :focus, hover nemusí při fokusu fungovat.

Kombinované pseudotřídy

:hover lze kombinovat s dalšími pseudotřídami pro vytvoření složité logiky. Například .card:hover .card__title mění styl nadpisu uvnitř karty při najetí na celou kartu. To umožňuje vytvářet efekty s vnořenou animací.

Typy hover efektů

Hover efekty se dělí do několika kategorií podle typu měněné vlastnosti. Každý typ je vhodný pro různé scénáře a vytváří u uživatele určitý pocit.

Typ efektuCSS vlastnostPříklad použití
Barevnýbackground, colorTlačítko mění barvu pozadí při najetí
Stínovýbox-shadowKarta se zvedá díky stínu
Měřítkotransform: scaleIkona se zvětšuje při najetí
Posuntransform: translatePrvek se posouvá nahoru nebo stranou
Podtrženíborder-bottom, underlineOdkaz dostává podtržení zespodu
Filtrfilter: brightnessObrázek se stává jasnějším nebo tmavším
Gradientbackground-imagePozadí se mění při najetí

Nejefektivnější typ — kombinace barevného a stínového efektu. Material Design doporučuje používat změnu výšky stínu jako hlavní typ hover zpětné vazby.

Podle Google Material Design (2024) by měl být hover efekt znatelný, ale ne rušivý. Doporučená délka animace — 200–300 milisekund. Příliš rychlé efekty (méně než 100 ms) mohou zůstat nepovšimnuty, příliš pomalé (více než 500 ms) uživatele dráždí.

CSS přechody pro plynulé efekty

CSS vlastnost transition dělá hover efekty plynulými tím, že animuje změnu vlastností v čase. Bez transition hover působí okamžitě, což vypadá trhaně a je nepříjemné pro oko.

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);
}

Délka transition závisí na kontextu. Pro malé prvky (ikony, odkazy) — 150–200 ms. Pro velké prvky (karty, modální okna) — 250–350 ms. Funkce easing ease-out plynule zpomaluje animaci na konci a vytváří přirozený pocit.

Doporučená praxe — specifikujte transition pro každou animovanou vlastnost zvlášť. Vlastnost all je pohodlná ve fázi vývoje, ale v produkci je lepší definovat konkrétní vlastnosti pro animaci, aby se předešlo neočekávaným efektům.

Hover na dotykových zařízeních

Na dotykových zařízeních koncepce hoveru neexistuje: není kurzor, který by mohl najet na prvek. Dotyk prvku okamžitě aktivuje click a přeskočí hover stav. To vytváří problémy, pokud se rozhraní spoléhá výhradně na hover.

Podle StatCounter (2026) pochází 62 % světového webového provozu z mobilních zařízení. Ignorovat absenci hoveru na dotykových obrazovkách znamená ztratit kontrolu nad UX pro většinu uživatelů.

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

Media dotaz hover: none umožňuje zjistit, že zařízení nepodporuje najetí. Na takových zařízeních jsou hover efekty vypnuty a interakce je založena na stavech :active a :focus. Alternativní řešení — zobrazení hover obsahu při dotyku (první dotyk zobrazí hover, druhý provede akci), ale tento vzor zhoršuje UX.

Přístupnost hover efektů

Přístupnost hoveru — kritický aspekt, který je často opomíjen. Uživatelé, kteří ovládají rozhraní klávesnicí, nemohou aktivovat :hover. Funkce dostupné pouze přes hover se pro ně stávají nedostupnými.

Pravidlo WCAG 2.2 (Success Criterion 1.4.13 — Content on Hover or Focus): obsah zobrazený při hoveru musí být přístupný i při fokusu. Pokud hover zobrazuje dodatečné informace (tooltip, rozbalovací menu), stejné informace musí být dostupné při :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;
    }
}

Media dotaz prefers-reduced-motion — respektujte systémová nastavení uživatelů. Pokud uživatel vypnul animaci v systému, hover efekty by měly být aplikovány okamžitě, bez transition. To pomáhá lidem s vestibulárními poruchami.

Další doporučení: nepoužívejte hover pro kritické funkce, nepoužívejte pouze barvu pro předávání informací při hoveru (přidejte ikonu nebo text) a zajistěte dostatečný kontrast pro hover stavy.

Často kladené otázky

Jaký je rozdíl mezi :hover a :focus v CSS?

:hover se aktivuje při najetí myší na prvek. :focus se aktivuje, když prvek získá fokus — při tabulaci klávesnicí nebo po kliknutí. Pro přístupnost je důležité duplikovat hover efekty pomocí :focus.

Lze použít hover na mobilních zařízeních?

Na dotykových zařízeních hover funguje nestabilně: první dotyk aktivuje :hover, druhý — click. To vytváří zmatek. Doporučuje se používat media dotaz @media (hover: none) pro vypnutí hover efektů na dotykových obrazovkách.

Jak vytvořit hover efekt v JavaScriptu?

Použijte události mouseenter (najetí) a mouseleave (odjetí kurzoru). Na rozdíl od CSS hoveru poskytuje JavaScript plnou kontrolu nad animací a umožňuje vytvářet složité sekvenční efekty se zpožděními.

Proč hover nefunguje na mobilním Safari?

iOS Safari má speciální zpracování :hover. Po dotyku prvek vstoupí do stavu :hover a zůstane v něm až do dalšího dotyku. To může vést k přilepení hover stylů. Řešení — použijte @media (hover: hover) pro aplikaci hoveru pouze na zařízeních podporujících najetí.

Který easing je nejvhodnější pro hover efekty?

ease-out (cubic-bezier(0, 0, 0.2, 1)) — optimální volba pro hover: rychlý start a plynulé zpomalení na konci. ease-in-out je vhodný pro efekty se dvěma fázemi (objevení a zmizení). Vyhněte se linear — vypadá nepřirozeně.

Shrnutí

  • Hover — CSS pseudotřída :hover, poskytující zpětnou vazbu při najetí kurzoru na prvek
  • Hlavní efekty — změna barvy, stínu, měřítka, posun, podtržení a filtry
  • CSS přechody — transition přidává plynulost s optimální délkou 200–300 ms
  • Dotyková zařízení — nepodporují hover, použijte @media (hover: none)
  • Přístupnost — duplikujte hover pomocí :focus, respektujte prefers-reduced-motion
  • Nejlepší praxe — kombinace barevného a stínového efektu s ease-out po dobu 250 ms

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také