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

Lekce 4 - Cykly a @media v SASS

V minulé lekci, Datové typy v SASS, jsme si ukázali datové typy v preprocesoru Sass. Známe už třeba čísla, řetězce, barvy, booleany, seznamy či mapy.

Datové typy v Sass se přeci musejí dát nějak efektivně využít. Proto si dnes představíme cykly a @media v Sass.

Doufejme, že je do CSS někdy přidají! Stejně jako ostatní funkčnosti CSS preprocesorů. :)

Each

Each, zapisován klíčovým slovem @each, je cyklus, který čerpá hodnoty ze seznamu nebo mapy. U tohoto cyklu nepotřebujeme znát počet opakování - jednoduše se provede pro všechny prvky. Ukažme si tedy, jak se cyklus zapisuje.

Proměnná $hodnoty nám značí seznam či pole, z které hodnoty bereme. Proměnná $hodnota je pak každá hodnota sama o sobě.

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

Příklad 1

Na webu potřebujeme vytvořit hover styly pro odkazy na různé sociální sítě. Vytvoříme si tedy mapu s 5ti libovolnými sociálními sítěmi, která bude obsahovat jméno sítě jako klíč a barvu jako hodnotu. Cyklus each využijeme pro vytvoření tříd, které budeme moci dosadit odkazu.

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

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

Výsledek v zkompilovaném 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, zapisován klíčovým slovem @while, je cyklus, který běží do té doby, dokud platí podmínka. Cyklus musí tedy obsahovat vždy nějakou podmínku tak, aby cyklus někdy skončil. A takto náš cyklus zapíšeme:

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

For

For, zapisován klíčovým slovem @for, je cyklus určený pro práci s předem zadanou hodnotou opakování. Cyklus používá řídící proměnnou, které musíme zadat počáteční a konečnou hodnotu. Můžeme počítat od počáteční hodnoty do konečné hodnoty, ale bez ní (to), nebo do konečné hodnoty, ale včetně (through).

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

Příklad 2

Vytvoříme jednoduché sloupce pro grid o 12ti sloupcích. V našem řešení budeme počítat pouze šířku.

Nejdříve vytvoříme proměnnou $grid-pocet, kam uložíme počet sloupců - tedy 12. V samotném cyklu vždy vytvoříme třídu .sloupec-[cislo], do které dosadíme šířku sloupce výpočtem.

$grid-pocet: 12;

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

Výsledek v zkompilovaném 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ý jistě zná @media queries z CSS3. V SASS mají úplně stejnou funkci, tedy stylování elementů na základě šířky obrazovky. V Sassu mají tu výhodu, že @media mohou být použity pomocí hnízdění přímo v elementu.

Příklad 3

Připravme si odstavce, které vycentrujeme a nastavíme jim šířku 50%. Dále pro ně budeme upravovat barvu pozadí. Nastavíme modrou barvu pro odstavec širší než 500px a žlutou pro odstavec menší. Samozřejmě nepoužijeme @media 2x, ale jen jednou - chytře.

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

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

Určitě si domyslíte, že s @media můžeme kombinovat i cykly :)

V další lekci, Resety CSS a HTML 5 rozložení, se zaměříme na CSS reset, HTML skeleton a také si ukážeme, jak můžeme stylovat HTML5 elementy ve starších prohlížečích.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 225x (666 B)
Aplikace je včetně zdrojových kódů v jazyce HTML a CSS

 

Předchozí článek
Datové typy v SASS
Všechny články v sekci
Moderní a profesionální webové portfolio
Přeskočit článek
(nedoporučujeme)
Resety CSS a HTML 5 rozložení
Článek pro vás napsal Honza Bittner
Avatar
Uživatelské hodnocení:
32 hlasů
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Aktivity