Moderní tvorba webových aplikací

O webu

Barva podle odrolování na stránce

Jak pouze v CSS měnit pozadí elementu v závislosti na odscrollování na stránce.

3 minuty

Poměrně zajímavý efekt mají zprávy ve Facebook Messengeru:

Gradient na pozadí ve FB Messengeru

V závislosti na umístění ve viewportu mají různou barvu. Tentýž element je dole červený a nahoře modrý. Během rolování mění svoji barvu.

Je až skoro překvapivé, jak jednoduché je takový efekt vyrobit. Stačí k tomu pouhé 2 vlastnosti:

  1. obrázkové pozadí s barevným přechodem – lze vytvořit přímo v CSS pomocí gradientu: background-image: linear-gradient(#0D6AB7, #DA3F94)
  2. fixní obrázkové pozadí – obrázkový gradient se zafixuje pomocí background-attachment: fixed

Jako obrázek samozřejmě nemusí posloužit pouze CSS gradient, ale může jít o obrázek libovolný.

Samostatná živá ukázka

Využití

Kromě již zmíněných zpráv na Facebooku se podobný efekt může hodit pro zvýraznění čehokoliv během scrollování.

Ukázka zvýraznění nadpisů při příjezdu elementu do viewportu.

Řešení v JavaScriptu

V JS jde zjistit počet pixelů, o které je odrolováno, a podle toho s barvou libovolně manipulovat.

CSS řešení je ale podstatně jednodušší.

Výkon

V dávných dobách bývaly s v CSS fixovaným pozadím přes background-attachment: fixed značné výkonnostní problémy:

Na pomalejších počítačích (CPU pod 400, záleží hlavně na grafické kartě) způsobuje hodnota fixed pomalejší rolování, protože se to musí přepočítávat.

Yuhů, Background-attachment na JPW

Dnes už to takový problém není. Nicméně fakt, že se plocha s obrázkovým fixním pozadím musí neustále přepočítávat (překreslovat), platí stále. Je dobré si to při používání podobných efektů uvědomit.

Související články

Převod písmen na VELKÁ a malá

Převedení textu na velká nebo malá písmena.

12 minut

Možnosti stylování <iframe>

Co lze a nelze u <iframe> ovlivnit pomocí CSS a jak na změnu textu nebo barev.

10 minut

Zvýraznění aktivní sekce při rolování

Moderní způsoby zvýraznění aktivní položky navigace podle aktuální sekce – CSS i IntersectionObserver.

5 minut

CSS funkce random()

Jak v CSS generovat náhodné hodnoty pomocí random() a kdy ji použít.

6 minut

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