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í.

4. diel - Cykly a @media v SASS

Z minulého článku sme sa naučili dátové typy v Sass. Tie sa predsa musia dať nejako efektívne využiť. Poďme si teda predstaviť cykly a @media.

Dúfajme, že je do CSS niekedy pridajú! Rovnako ako ostatné funkčnosti CSS preprocesorov. :)

Each

Each, zapisovaný kľúčovým slovom @each, je cyklus, ktorý čerpá hodnoty zo zoznamu alebo mapy. U tohto cyklu nepotrebujeme poznať počet opakovaní - jednoducho sa vykoná pre všetky prvky. Ukážme si teda, ako sa cyklus zapisuje.

Premenná $hodnoty nám značí zoznam či pole, z ktorej hodnoty berieme. Premenná $ hodnota je potom každá hodnota sama o sebe.

@each $hodnota in $hodnoty {
      ... kód ...
}

Príklad 1

Na webe potrebujeme vytvoriť hover štýly pre odkazy na rôzne sociálne siete. Vytvoríme si teda mapu s 5ti ľubovoľnými sociálnymi sieťami, ktorá bude obsahovať meno siete ako kľúč a farbu ako hodnotu. Cyklus each využijeme pre vytvorenie tried, ktoré budeme môcť dosadiť odkazu.

$site: (
   itnetwork: #3b94e0,
   facebook: #3b5998,
   google: #DD4B39,
   twitter: #55acee,
   youtube: #e52d27
);

@each $sit, $barva in $site {
   .sit-#{$sit}:hover {
      color: $barva;
   }
}

Výsledok v skompilované CSS:

.sit-itnetwork:hover {
    color: #3b94e0; }
.sit-facebook:hover {
    color: #3b5998; }
.sit-google:hover {
    color: #DD4B39; }
.sit-twitter:hover {
    color: #55acee; }
.sit-youtube:hover {
    color: #e52d27; }

While

While, zapisovaný kľúčovým slovom @while, je cyklus, ktorý beží do tej doby, kým platí podmienka. Cyklus musí teda obsahovať vždy nejakú podmienku tak, aby cyklus niekedy skončil. A takto náš cyklus zapíšeme:

@while [podmínka] {
     ... kód ....
}

For

For, zapisovaný kľúčovým slovom @for, je cyklus určený pre prácu s vopred zadanou hodnotou opakovania. Cyklus používa riadiace premennú, ktoré musíme zadať počiatočnú a konečnú hodnotu. Môžeme počítať od počiatočnej hodnoty do konečnej hodnoty, ale bez nej (to), alebo do konečnej hodnoty, ale vrátane (through).

@for $i from $pocatecni [to/through] $konecna {
  ... kód ...
}

Príklad 2

Vytvoríme jednoduché stĺpce pre grid o 12tich stĺpcoch. V našom riešení budeme počítať iba šírku.

Najskôr vytvoríme premennú $grid-pocet, kam uložíme počet stĺpcov - teda 12. V samotnom cykle vždy vytvoríme triedu .sloupec-[cislo], do ktorej dosadíme šírku stĺpca výpočtom.

$grid-pocet: 12;

@for $i from 1 through $grid-pocet{
   .sloupec-#{$i} {
      width: (100% / $grid-pocet) * $i;
   }
}

Výsledok v skompilované CSS:

.sloupec-1 {
    width: 8.33333%;
}

.sloupec-2 {
    width: 16.66667%;
}

.sloupec-3 {
    width: 25%;
}

.sloupec-4 {
    width: 33.33333%;
}

.sloupec-5 {
    width: 41.66667%;
}

.sloupec-6 {
    width: 50%;
}

.sloupec-7 {
    width: 58.33333%;
}

.sloupec-8 {
    width: 66.66667%;
}

.sloupec-9 {
    width: 75%;
}

@media

Každý určite pozná @media queries z CSS3. V SASS majú úplne rovnakú funkciu, teda štýlovanie elementov na základe šírky obrazovky. V SASS majú tú výhodu, že @media môžu byť použité pomocou hniezdenia priamo v elementu.

Príklad 3

Pripravme si odseky, ktoré vycentrujeme a nastavíme im šírku 50%. Ďalej pre nich budeme upravovať farbu pozadia. Nastavíme modrú farbu pre odstavec širší ako 500px a žltú pre odstavec menšie. Samozrejme nepoužijeme @media 2x, ale len raz - chytro.

p {
   width: 50%;
   margin: 0px auto;
   background: yellow;

   @media (min-width: 500px) {
      background: blue;
   }
}

Určite si domyslíte, že s @media môžeme kombinovať aj cykly :) V budúcej lekcii, Reset CSS a HTML 5 rozloženie , si ukážeme, ako resetovať CSS štýly a ako na HTML5 rozloženie.


 

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é 225x (666 B)
Aplikácia je vrátane zdrojových kódov v jazyku HTML a CSS

 

Predchádzajúci článok
Dátové typy v SASS
Všetky články v sekcii
Moderné a profesionálne webové portfólio
Preskočiť článok
(neodporúčame)
Reset CSS a HTML 5 rozloženie
Č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