
Zvýraznění aktivované kotvy (:target)
Pokud se v rámci stránky používají odkazy na jednotlivé #části, může být vhodné zvýrazněním ukázat, kam odkaz mířil.
Selektor :target
Od Internet Exploreru 9 (včetně) lze použít jednoduché řešení bez JavaScriptu v prostém CSS:
:target {background: #FFCFA4;}
Po kliknutí se v podporovaných zařízeních celý tento blok zvýrazní. (Zrušit.)
Využití
Kromě zvýraznění aktivní kotvy lze :target použít k vytvoření „záložek“ přepínatelných bez načítání dalších stránek.
HTML je značkovací jazyk.
CSS není značkovací jazyk.
JavaScript je klientský skriptovací jazyk.
PHP je serverový skriptovací jazyk.
Podobného efektu lze dosáhnout i bez použití :targetu. Stačí jednotlivým záložkám (elementy .tab) nastavit pevnou výšku. Jejich rodiči (element .tabs) overflow: hidden + tutéž pevnou výšku a zbytek už zařídí odkazy na kotvy.
Zvýraznění kotvy pomocí JS
Pro starší prohlížeče nezbývá než na:target zapomenout a do CSS přidat zvláštní .target třídu. :target, .target {/* styly pro zvýraznění */}
A tu potom přidávat JavaScriptem v závislosti na hodnotě kotvy, která se nachází v location.hash.
Stačí-li zvýraznění jen po načtení stránky, kód je velmi prostý.
var hash = location.hash.substr(1); // první znak je #
var element = document.getElementById(hash);
if (element) {
element.className+= " target";
}
Má-li JavaScript reagovat na průběžnou změnu hashe lze používat od IE 8 včetně window.onhashchange a pro starší časovač. Nebo mít používané hashe u elementů s přesnou výškou v nějakém neviditelném objektu a tam odchytávat onscroll.
Testovat dostupnost onhashchange lze pomocí.
if ("onhashchange" in window) {
// onhashchange funguje
}Co si myslíte o tomto článku?
Diskuse
Související články
CSS item-pack: balance – vyvážené rozložení flex položek
Vlastnost item-pack: balance rozděluje flex položky rovnoměrně mezi řádky, podobně jako text-wrap: balance vyvažuje řádky textu.
CSS Container Queries – responsivní komponenty
Jak pomocí @container, container-type a container-name vytvářet komponenty, které se přizpůsobí velikosti svého rodiče místo viewportu.
CSS Anchor Positioning – posicování elementů relativně k jiným
Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.
Centrování na webových stránkách
Moderní způsoby vertikálního i horizontálního centrování v CSS. Flexbox, Grid, margin auto a další techniky.