IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

3. diel - Dátové typy v SASS

V predchádzajúcom cvičení, Cvičenie na úvod do CSS preprocesora SASS, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulom článku sme si osviežili a vyskúšali už nadobudnuté zručnosti ohľadom preprocesoru Sass. Teraz si predstavíme základné dátové typy, ktoré budeme v preprocesoru využívať.

Sass obsahuje niekoľko dátových typov. My si ukážeme čísla (numbers), textové reťazce (strings), farby (colors), logickú hodnotu (booleans), null, zoznamy (lists) a mapy (maps).

Ku každému dátovému typu máme k dispozícii niekoľko funkcií. Ukážeme si teda tie, ktoré by sa nám mohli hodiť najviac. Všetky funkcie samozrejme môžete nájsť na http://sass-lang.com/...nctions.html

Čísla

Číselný dátový typ nám umožňuje uchovávať akékoľvek reálne číslo. Čísla môžeme zapísať klasicky ako číslo celé, desatinné, zlomok ... S číslami môžeme následne vykonávať matematické operácie ako napríklad sčítanie, odčítanie, násobenie a delenie.

Najpoužívanejšie funkcie

  • percentage($cislo) - vráti danej číslo prevedené na percentá
percentage(0.23) => 23%
percentage(100px / 50px) => 200%
  • round($cislo) - vráti danej číslo zaokrúhlené k najbližšiemu celému číslu
round(23.4px) => 23px
round(23.6px) => 24px
  • abs($cislo) - vráti absolútnu hodnotu čísla
abs(23px) => 23px
abs(-23px) => 23px
  • min($cislo1, $cislo2, ...) - vráti najmenší z odovzdaných čísel
min(7px, 23px) => 7px
min(2em, 23em, 7em) => 2em
  • max($cislo1, $cislo2, ...) - vráti najväčší z odovzdaných čísel
min(7px, 23px) => 23px
min(2em, 23em, 7em) => 23em
  • random($limit) - vráti náhodné číslo, medzi 1 (vrátane) a $ limit (bez)
random(23) => 7
random(23) => 3
random(23) => 11

Príklad 1

Zo zoznamu čísel - 7px, 15px, 3px - zistite najmenšie číslo. Ak najmenším číslom je číslo 3, Odfarbi text na červeno.

$min: min(7px, 15px, 3px);
@if $min == 3 { color: red }

*V podmienke môžeme použiť ako 3px, tak i **3.***

Textové reťazce

Tento dátový typ umožňuje ukladať textové reťazce. Môžeme ho používať v dvoch formách - s úvodzovkami či bez úvodzoviek.

  • Text s úvodzovkami, kde môžeme použiť jednoduché i dvojité - teda 'text' aj "text".
$a: "ahoj";
$b: 'čau';
  • Pre text bez úvodzoviek použijeme jednoducho text.
$c: nazdar;

Textové reťazce môžeme tiež spájať pomocou operátora +.

$d: $a + $b;

Vypisovanie obsahu premenných môžeme vykonať pomocou špeciálneho zápisu #{ ... }, kde sa obsah vnútri zátvoriek vypíše ako textový reťazec. Môžeme tak napr. Vložiť obsah nejaké premenné priamo do selektora ako napr. .blok#{$cisloBloku}.

Najpoužívanejšie funkcie

  • unquote($string) - vráti nám text bez úvodzoviek
unquote("libovolný text") => libovolný text
unquote(libovolný text) => libovolný text
  • quote($string) - vráti nám text s úvodzovkami
quote(libovolný text) => "libovolný text"
quote("libovolný text") => "libovolný text"
  • str-length($string) - vráti nám dĺžku, teda počet písmen, textového reťazca - počnúc od 1
str-length(text) => 4
  • to-upper-case($string) - vráti nám string písaný veľkým písmom
to-upper-case(libovolný text) => LIBOVOLNÝ TEXT
  • to-lower-case($string) - vráti nám string písaný malým písmen
to-lower-case(LIBOVOLNÝ TEXT) => libovolný text

Príklad 2

Povedzme teda, že budeme mať 2 premenné - jednu s veľkosťou písma a druhú s výškou riadku. Tiež budeme chcieť nastaviť písmo na napr. Arial.

$velikost-pisma: 22px;
$vyska-radku: 30px;
font: $velikost-pisma/$vyska-radku Arial;

Kód zadaný vyššie s najväčšou pravdepodobnosťou nebude fungovať - teda tak, ako si predstavujeme my. Premenné sú dátového typu čísla, avšak mi potrebujeme textový reťazec. Ako už asi tušíte, čísla sa nám vydelí.

22px/30px => 0.73333

My však potrebujeme previesť čísla na text, teda využijeme #{}. Nezabudnite napísať každú premennú zvlášť, inak by sme dosiahli rovnaký výsledok. Správne riešenie teda bude napr. Takejto.

font: #{$velikost-pisma}/#{$vyska-radku} Arial;

Príklad 3

Povedzme, že nastane situácia, kedy budeme chcieť vytvoriť selektor podľa nejaké premenné. V tomto prípade použijeme taktiež #{}.

Vytvoríme si teda premennú, ktorá bude obsahovať ku príkladu názov triedy, ktorá nám zafarbia písmo na červeno.

$nazev-tridy: cerveny;
p.#{$nazev-tridy}{
   color: red;
}

Farby

Ďalším bezchybným dátovým typom sú farby. Tie môžeme zapísať hexadecimálnom, rgb / a alebo HSL / a zápisom.

$hexadecimalni: #24fa9e;
$rgba: rgba(210, 73, 19, 0.2);
$hsla: hsla(240, 100%, 50%, 0.5);

S farbami, okrem používania ako normálne premenné, môžeme robiť rôzne "psie" kusy. Farby rovnakého typu môžeme medzi sebou vždy sčítať, odčítať, násobiť ... Funguje to tak, že sa nám farba rozloží na jednotlivé zložky farby, ktoré sa navzájom sčítajú, odpočítajú či vynásobí. Tieto operácie sa dejú samozrejme v určitom rozsahu, kde pre hexadecimálne zápis jest minimum 0 a maximum FF. Pre RGB je potom minimum 0 a maximum 255 a podobne.

Najpoužívanejšie funkcie

Funkciou, kde sa pracuje s farbami, je naozaj veľa. Tu by som obzvlášť odporúčať prehliadnuť dokumentáciu http://sass-lang.com/...nctions.html

  • darken($barva, $procent) - vráti nám tmavšiu farbu zo základu $ farba o hodnotu $ percent
darken(hsl(25, 100%, 80%), 30%) => hsl(25, 100%, 50%)
darken(#800, 20%) => #200
  • lighten($barva, $procent) - vráti nám svetlejšiu farbu zo základu $ farba o hodnotu $ percent
lighten(hsl(0, 0%, 0%), 30%) => hsl(0, 0%, 30%)
lighten(#800, 20%) => #e00
  • opacify($color, $plus) - zvýši nám alfa zložku vo farbe - menej priehľadná
opacify(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.6)
opacify(rgba(0, 0, 0, 0.8), 0.2) => rgba(0, 0, 0, 1.0)
  • transparentize($color, $minus) - zmenší nám alfa zložku vo farbe - viac priehľadná
transparentize(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.4)
transparentize(rgba(0, 0, 0, 0.8), 0.2) => rgba(0, 0, 0, 0.6)

Príklad 4

Skúsime si sčítať dve farby a ukázať si na nich princíp operácií s farbami. Ako som si už hovorili, ak vykonávame nejaké operácie s farbami, farba sa rozdelí na jednotlivé zložky, medzi ktorými sa operácia vykoná. V našom prípade - súčet - sa teda jednotlivé zložky spočítajú.

color: #010203 + #040506;
// 01 + 04 => 05
// 02 + 05 => 07
// 03 + 06 => 09
// => #050709

Príklad 5

V ďalšom príklade si skúsme farbu vynásobiť. Násobiť môžeme ako farbou, tak ale aj číslom.

color: #010203 * 2;
// 01 * 2 => 02
// 02 * 2 => 04
// 03 * 2 => 06
// => #020406

Zoznamy

Dátový typ zoznam je séria hodnôt, ku ktorým pristupujeme podľa určitého indexu - teda v podstate poradí položky. Zapisujeme je ako séria hodnôt oddelených medzerou alebo čiarkou.

Najpoužívanejšie funkcie

  • length($seznam) - vráti počet položiek v zozname
length(10px 20px 30px) => 3
length(alfa, beta, gama, delta) => 4
  • nth($seznam, $index) - vráti hodnotu položky na pozíciu $ index
nth(10px 20px 30px, 2) => 20px
nth((alfa, beta, gama, delta),1) => alfa
  • join($seznam1, $seznam2) - spojí $ seznam1 a $ listina2
join((jedna, dva), (alfa, beta)) => jedna, dva, alfa, beta
  • index($seznam, $value) - vráti pozíciu položky $ value zo zoznamu $ zoznam
index(1px solid red, solid) => 2

Príklad 6

Vytvoríme si dva zoznamy - zoznam šeliem a vtákov. Zoznamy následne spojíme do zoznamu zvierat.

$selmy: kocka lev lvice medved;
$ptaci: papousek korela andulka sokol orel;
$zvirata: join($selmy, $ptaci);
// $zvirata => kocka lev lvice medved papousek korela andulka sokol orel

Mapy

Mapy sú dátovým typom, ktorý môžete poznať pod názvom asociatívne pole. Obsahuje hodnoty dostupné podľa ich kľúča. Kľúče sú unikátne.

Mapy zapisujeme tak, ako ide vidieť na ukážke nižšie.

$pole: (klic1: hodnota1, klic2: hodnota2, klic3: hodnota3);

Najpoužívanejšie funkcie

  • map-get($mapa, $klic) - vráti hodnotu kľúča $ kluc z mapy $ mapa
map-get(("alfa": "hodnotaAlfy", "beta": "hodnotaBety"), "alfa") => "hodnotaAlfy"
map-get(("alfa": "hodnotaAlfy", "beta": "hodnotaBety"), "alfaa") => null
  • map-remove($mapa, $klic) - odstráni položku kľúče $ kluc z $ mapa
map-remove(("alfa": "hodnotaAlfy", "beta": "hodnotaBety"), "beta") => ("alfa": "hodnotaAlfy")
  • map-keys($mapa) - vráti zoznam kľúčov z mapy $ mapa
map-keys("alfa": "hodnotaAlfy", "beta": "hodnotaBety") => "alfa", "beta"
  • map-values($mapa) - vráti zoznam hodnôt z mapy $ mapa
map-values("alfa": "hodnotaAlfy", "beta": "hodnotaBety") => "hodnotaAlfy", "hodnotaBety"
  • map-has-key($mapa, $klic) - vracia, či je v mape $ mapa kľúč $ klic
map-has-key(("alfa": "hodnotaAlfy", "beta": "hodnotaBety"), "alfa") => true
map-has-key(("alfa": "hodnotaAlfy", "beta": "hodnotaBety"), "gama") => false

Null

Dátový typ null je pomerne zvláštnym typom. Využiť sa dá napr. Pre voliteľné argumenty mixin či funkcií. Tento dátový typ môžeme tiež využiť ako napr. Výstup funkcia, ktorá nám určí, aká hodnota sa má pre danú vlastnosť štýlu použiť - kde sa pri hodnote null vlastnosť do CSS nevypíše.

Logická hodnota

Logickou hodnota je dátový typ, ktorá rozpoznáva pravdu a nepravdu - teda true a false. Využiť sa dá predovšetkým pri premenných, ako atribút funkcie či mixin a podobne.

V ďalšom článku si ukážeme cykly a použitia @media.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 228x (930 B)
Aplikácia je vrátane zdrojových kódov v jazyku HTML a CSS

 

Predchádzajúci článok
Cvičenie na úvod do CSS preprocesora SASS
Všetky články v sekcii
Moderné a profesionálne webové portfólio
Preskočiť článok
(neodporúčame)
Cykly a @media v SASS
Článok pre vás napísal Honza Bittner
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Aktivity