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

Jak udělat input s automatickou šířkou podle obsahu

Několik způsobů, jak dosáhnout toho, aby se textové pole rozšiřovalo a zužovalo podle délky zadaného textu.

9 minut

Šířka znaků ve fontech

Proč mají znaky různou šířku a jak to řešit v responsivním designu.

17 minut

CSS @starting-style

Jak animovat elementy při jejich prvním zobrazení pomocí at-pravidla @starting-style.

12 minut

CSS pseudo element ::marker

CSS pseudo element ::marker umožňuje stylovat odrážky seznamů

4 minuty

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata
2013–2026