Přehlednější definice z-index v jazyce SASS
CSS vlastnost z-index určuje prioritu při překrývání HTML elementů. Jedná se vlastně o výšku prvku na ose z. Definice se provádí pomocí celého čísla a čím větší číslo prvek dostane, tím více v popředí se bude nacházet. Ať chceme nebo ne, použití vlastnosti z-index se u větších projektů časem nevyhneme. Asi si dokážete představit, že pokud takových definic budeme mít v kódu více, je rázem těžší udržovat správné pořadí. Nehledě na to, že jakákoliv změna pořadí v budoucnu je poměrně pracná a náchylnější na vznik chyb. V tomto článku bych chtěl ukázat jednoduchý trik, jak lze zkrotit definici z-index v jazyce SASS.
Celé kouzlo spočívá v tom, že všechny výskyty z-index definujeme pouze na jednom místě v kódu. V SASS k tomuto účelu můžeme použít tzv. mapy. Jedná se o asociativní datový typ, který nám dovoluje definovat více hodnot v rámci jedné proměnné. Každá hodnota má svůj unikátní klíč. Například takto:
$colors: ( primary: #FFBB00, secondary: #0969A2, );
Podobně si uložíme do jedné proměnné všechny hodnoty z-index, které na projektu používáme:
/** * Global definitions for all z-indexes on the web */ $layer: ( disabled-element: 20, panel: 950, form-bubble: 985, header-dropdown: 1100, page-sidebar: 1200, date-range-picker: 1500, modal: 2000, );
Konkrétní hodnotu lze v SASS získat pomocí funkce map-get, které předáme jako parametr právě námi definovanou mapu $layer a požadovaný klíč.
.modal {
z-index: map-get($layer, modal);
}
Já si celý zápis ještě více zjednodušuji pomocí vhodně definované funkce:
/**
* Function for better work with z-indexes;
*/
@function layer($name) {
@if map-has-key($layer, $name) {
@return map-get($layer, $name);
}
@warn "The key '#{$name}' is not in the map '$layer'";
@return null;
};
Výhodou použítí této funkce je, že si nemusím pamatovat název proměnné, ve které mám uložené hodnoty z-index. V kódu pak použiji pouze jednoduchý zápis:
.modal {
z-index: layer(modal);
}
Díky tomu, že mám všechny hodnoty uložené na jednom místě, se výrazně zjednoduší a zpřehlední všechny budoucí úpravy. Například takové přečíslování hodnot z-index je rázem velice jednoduchý úkon a není třeba pracně procházet celý kód. Upravíme pouze jednu proměnou.
Žádné komentáře