Moderní tvorba webových aplikací

O webu

Universální hover efekt pro různé barvy pozadí

Jak vytvořit universální :hover efekt pro různě barevná tlačítka.

6 minut

V případě, že na webové stránce používáme různě barevné odkazy nebo tlačítka, je trochu nepohodlné pro každou barvu zvlášť vytvářet samostatný efekt při najetí myší (:hover).

Dát uživateli potvrzení, že na tlačítko najel změnou stylu, bývá docela vhodné. Jak tedy pohodlně na to?

Průhlednost (opacity)

Jako příklad mohou posloužit tlačítka sociálních sítí:

Facebook Google +

Cílem je, aby každé tlačítko mělo :hover ve své barvě, aniž by se musela konkrétní barva pro každý jeden odkaz nastavovat.

Nejjednodušší řešení je asi měnit průhlednost (opacity). Buď ji při :hoveru snižovat.

Facebook Google +

Nebo naopak zvyšovat.

Facebook Google +

Překrytí průhledným elementem

Výše uvedená změna průhlednosti přecejenom nemusí být vždy ideální. Hezčí efekt jde vykouzlit překrytím jednobarevným elementem, vloženým přes :before/:after.

Tento pseudoelement se absolutně naposicuje přes původní obsah, nastaví se mu pozadí (např. bílá v případě zesvětlení, černá v případě ztmavení) a celé se to hodně zprůhlední (opacity: 0.1).

Zesvětlení

Facebook Google +

Ztmavení

Facebook Google +

Samostatná ukázka

Internet Explorer 8 a 9

Alternativně k opacity by šlo rovnou použít rgba, ale to funguje až od IE 9.

Vytvoření pseudo-elementu přes :before/:after sice funguje už v IE 8, nicméně u pseudo-elementů v tomto prohlížeči není možné nastavovat průhlednost. Takže je stejně nejspíš nutné použít další element uvnitř odkazu. Ukázka.

Vylepšení :hoveru

Samotnou podobou hover efektu může ještě vyšperkovat obrázkový CSS gradient (ukázka) nebo přechodový efekt transition.

CSS vlasnost filter

Dle CSS specifikace by se k ztmavení/rozsvícení báječně hodil CSS filter brightness:

.ztmavit a:hover {
  filter: brightness(90%);
}
.zesvetlit a:hover {
  filter: brightness(110%);
}

Bohužel ale momentálně funguje jen ve Webkitu (s prefixem -webkit-). Ukázka.

Použití :focus a :active

Při vytváření :hover stylu je dobrou volbou rovnou stejný styl přidat i pro :focus a :active, pokud tedy :focus a :active nemají už styly vlastní.

Nedá to moc práce navíc a zlepší to uživatelský dojem.

Související články

Vložení CSS do stránky

Jakými všemi způsoby připojit CSS do stránky.

9 minut

Jak „focusovat“ správně díky :focus-visible

Jak správně řešit označený (:focus) stav formulářových prvků.

4 minuty

Poskakování obsahu akčních tlačítek

Jak vyřešit problém s poskakováním obsahu, když se změní textace nebo tučnost tlačítka.

9 minut

Má smysl měnit kursor tlačítek?

Tlačítka mají na webu po najetí jiný kursor než odkazy.

4 minuty

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025