SCSS kurz

SCSS kurz

SCSS a Sass

 

 

 

 

 

 

 

 

 

 

 

 

Odkaz na učebnici

http://bit.ly/hackniscss 

 

 

 

Odkaz na videa na kanálu Hackni svou budoucnost

https://www.youtube.com/playlist?list=PLQ8x_VWW6AksaZf6EGmEdQkDkvRuWe3FW 

 

 

1. Co je to SCSS

https://youtu.be/E-ALxq2cs7E 

 

Odkaz na učebnici: https://drive.google.com/file/d/1-dynRnM4KjE8Qm9nUwxgCyGDbsvxSgzO/view?usp=sharing

 

 

2. Jak se liší SCSS a SASS

https://youtu.be/QaD2YSOYo70

 

Odkaz na učebnici:  

https://drive.google.com/file/d/1_ullcxU2OsJ78GvusVJitBOO3MLjL0g6/view?usp=sharing 

 

3. Učebnice SCSS a Sass

 

Učebnici najdete na tomto odkazu: http://bit.ly/hackniscss 

 

4. Nastavujeme VS code pro SCSS jazyk

https://youtu.be/P_If-ons374

 

Index.html

 

   

Testovací nadpis

 

 

 

Style.SCSS

h1 {

    color: red;

}

 

Style.CSS

h1 {

  color: red;

}

/*# sourceMappingURL=style.css.map */

 

 

5. Proměnné v SCSS - tvoříme první proměnnou

https://youtu.be/V950MH6Z9G8

 

Style.SCSS

$main-color: red;

 

h1 {

    color: $main-color;

}

 

p {

    background: $main-color;

}

 

Style.CSS

h1 {

  color: red;

}

 

p {

  background: red;

}

/*# sourceMappingURL=style.css.map */

 

 

 

 

6. Proměnné v SCSS - vytváříme další proměnné

https://youtu.be/i75jsktKlx0

 

$main-color: red;

$border-color: rgb(209, 14, 79);

$font-size: 35px;

 

h1 {

    color: $main-color;

    border: 3px solid $border-color;

    font-size: $font-size;

}

 

p {

    background: $main-color;

    border: 5px solid $border-color;

    font-size: $font-size;

}

 

7. Proměnné v SCSS - Jak psát správně proměnné v SCSS

https://youtu.be/DQcqvs40bQ4

 

// === COLORS ===

$main-color: red;

$border-color: rgb(209, 14, 79);

$secondary-color: blue;

$ternary-color: yellow;

$link-color: $border-color;

 

// === FONTS ===

$font-size: 35px;

 

// === SIZES ===

$header-height: 500px;

$footer-height: 400px;

 

 

h1 {

    color: $main-color;

    border: 3px solid $border-color;

    font-size: $font-size;

}

 

p {

    background: $main-color;

    border: 5px solid $border-color;

    font-size: $font-size;

}

 

/*

1. pojmenování proměnných,

2. uložení jedné proměnné do druhé,

3. rozdělujte proměnné do skupin,

4. používejte komentáře,

5. proměnná pouze jednou? Nevadí

*/

 

8. Procvičování - vše kolem proměnných

https://youtu.be/nviW_YWMdLY

 

Index.html

 

   

 

       

Text

 

   

 

 

   

Testovací nadpis

 

   

Lorem ipsum dolor sit amet consectetur adipisicing elit. Obcaecati ullam corrupti culpa fugiat repudiandae dolorum quidem minus iusto explicabo eos nam cumque nisi eaque, provident earum harum debitis aspernatur expedita.

 

 

   

 

       

Text text

 

   

 

 

 

 

Style.SCSS

/* === Zadání

Vytvořte proměnné:

- pro hlavní barvu,

- pro méně důležitou barvu,

- pro barvu používanou jen zřídka,

- pro výšku hlavičky,

- pro výšku patičky

- pro velikost psíma

 

Rozdělte vše do skupin a okomentujte

 

Všechny proměnné použijte podle libosti

*/

 

// === COLORS ===

$main-color: blue;

$secondary-color: yellow;

$ternary-color: red;

 

// === SIZES ===

$header-height: 180px;

$footer-height: 220px;

 

// === FONTS ===

$font-size: 35px;

h1, p {

    font-size: $font-size;

}

 

h1 {

    color: $main-color;

    background: $secondary-color;

}

 

p {

    color: $ternary-color;

}

 

header {

    height: $header-height;

}

 

footer {

    height: $footer-height;

}

 

 

9. Partials - rozdělujeme kód do více souborů

https://youtu.be/yiCc9trF3DA

 

Vytvořte nový soubor _variables.scss

 

_variables.SCSS - vložte do něj veškeré proměnné

// === COLORS ===

$main-color: blue;

$secondary-color: yellow;

$ternary-color: red;

 

// === SIZES ===

$header-height: 180px;

$footer-height: 220px;

 

// === FONTS ===

$font-size: 35px;

 

Style.SCSS - naimportujte soubor s proměnnými

@import "variables";

 

body {

    background: $secondary-color;

}

 

 

10. Hledáme chyby v konzoli

https://youtu.be/Q7YrPaizRJM

 

Zkuste si tyto chyby a podívejte se, jak jsou vypisovány do konzole

 

Chyba - chybějící středník

$footer-height: 220px

 

Chyba - chybějící znak dolaru ($) před proměnnou

header-height: 180px;

 

Chyba - chybějící “i” ve slově import

@mport "variables";

 

 

11. Mixiny - co to je a jak je používat

https://youtu.be/MbLN0V0spgo

 

Index.html

   Můžeš kliknout

   Můžeš kliknout

 

Style.SCSS - tvorba mixiny s názvem myButton

@mixin myButton {

    background-color: orange;

    color: #fff;

}

 

Style.SCSS - použití mixiny

.alert-button {

    @include myButton;

    padding: 5px 10px;

}

 

.bigger-button {

    @include myButton;

    padding: 10px 15px;

}

 

Style.CSS

.alert-button {

  background-color: orange;

  color: #fff;

  padding: 5px 10px;

}

 

.bigger-button {

  background-color: orange;

  color: #fff;

  padding: 10px 15px;

}

 

 

 

12. Partials pro mixiny

https://youtu.be/aPDd6hmj-aU

 

Vytvoříme nový soubor _mixins.scss

 

_mixins.SCSS - vložíme do něj mixinu z předchozího videa

@mixin myButton {

    background-color: orange;

    color: #fff;

}

 

Style.SCSS - nesmíme zapomenout soubor napojit do style.scss

@import "variables";

@import "mixins";

 

 

 

13. Procvičování - procvičujeme mixiny

https://youtu.be/WcTkTDEWMOI

 

Zadání

/* Vytvoříme mixinu, která bude zahrnovat: font-family, text-align, color a bude se jmenovat textStyle. Použijeme ji na odstavce (přidejte si do stránky více odstavců) a na nadpis h1. Odstavec bude mít velikost písma 18px a h1 velikost 35px */

 

Index.html

 

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Odio fuga dolor impedit facilis maxime corrupti quasi, veritatis error cum repudiandae libero laudantium reprehenderit nobis, quia voluptas et! Inventore, dolores pariatur.

 

 

   

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Odio fuga dolor impedit facilis maxime corrupti quasi, veritatis error cum repudiandae libero laudantium reprehenderit nobis, quia voluptas et! Inventore, dolores pariatur.

 

 

   

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Odio fuga dolor impedit facilis maxime corrupti quasi, veritatis error cum repudiandae libero laudantium reprehenderit nobis, quia voluptas et! Inventore, dolores pariatur.

 

 

_mixins.SCSS

@mixin textStyle {

    font-family: Arial, Helvetica, sans-serif;

    color: rgb(133, 45, 45);

    text-align: center;

}

 

Style.SCSS

p {

    @include textStyle;

    font-size: 18px;

}

 

h1 {

    @include textStyle;

    font-size: 35px;

}

 

 

 

14. Mixiny - další možný zápis v mixině

https://youtu.be/zMOtMm_hu-Y

 

_mixins.scss

@mixin big-text {

    font: {

        size: 30px;

        weight: bold;

        family: Verdana;

    }

}

 

Style.SCSS

h2 {

    @include big-text;

}

 

Style.CSS

h2 {

  font-size: 30px;

  font-weight: bold;

  font-family: Verdana;

}

 

 

 

15. Mixiny - vkládání mixin do sebe

https://youtu.be/Rr4DgEEgi0Q

 

Index.html

 

_mixins.scss

@mixin rounded {

    border-radius: 15px;

}

 

@mixin myButton {

    @include rounded;

    background-color: orange;

    color: #fff;

}

 

@mixin image {

    @include rounded;

    width: 300px;

}

 

Style.SCSS

img {

    @include image;

}

 

 

 

16. Mixiny - Všeobecná mixina

https://youtu.be/_3V4zWkw3Ho

 

_mixins.scss

@mixin our-links {

    a {

        font-style: italic;

        text-decoration: none;

        color: $ternary-color;

    }

}

 

Style.SCSS

@include our-links;

 

Style.CSS

a {

  font-style: italic;

  text-decoration: none;

  color: red;

}

 

 

17. Mixiny - mixina s argumentem

https://youtu.be/ibmH49QjRGU

 

_mixins.SCSS

@mixin rounded($radius) {

    border-radius: $radius;

}

 

Style.SCSS

img {

    @include image;

    @include rounded(20px);

}

 

_mixins.SCSS - vložili jsme mixinu rounded s hodnotou 15px do mixiny myButton, která je použita v souboru style.scss u tlačítek

@mixin myButton {

    @include rounded(15px);

    background-color: orange;

    color: #fff;

}

 

 

 

18. Mixiny - mixina s defaultní (výchozí) hodnotou

https://youtu.be/MhFgkrVDttA

 

_mixins.scss

@mixin rounded($radius: 15px) {

    border-radius: $radius;

}

 

Style.SCSS

img {

    @include image;

    @include rounded;

}

 

Style.CSS

img {

  width: 300px;

  border-radius: 15px;

}

 

 

 

19. Mixiny - mixina a více argumentů

https://youtu.be/jXBfhsoKb-g

 

_mixins.SCSS

@mixin rounded($radius: 15px, $border: 2px solid green) {

    border-radius: $radius;

    border: $border;

}

 

style.SCSS

img {

    @include image;

    @include rounded(25px, 2px solid red);

}

 

style.CSS

img {

  width: 300px;

  border-radius: 25px;

  border: 2px solid red;

}

 

 

 

20. Mixiny - mixina a pořadí argumentů

https://youtu.be/azfsG_ekmq4

 

Pokud zadáváte druhý argument, ale první nechcete, tak ho musíte pojmenovat. Tím dáte najevo, že zadáváte ten druhý a u prvního má vzít výchozí hodnotu.

img {

    @include image;

    @include rounded($border: 2px solid red);

}

 

 

 

 

 

 

 

 

21. Mixiny - mixina s jedním argumentem a více hodnotami (vararg)

https://youtu.be/KT3OI6r2cz4

 

_mixins.scss

@mixin shadow($shadows...){

    box-shadow: $shadows;

}

 

Style.SCSS

img {

    @include image;

    @include rounded($border: 2px solid red);

    @include shadow(5px 5px 10px green, 10px 10px 10px blue, 15px 15px 15px orange)

}

 

 

Style.CSS

img {

  width: 300px;

  border-radius: 15px;

  border: 2px solid red;

  -webkit-box-shadow: 5px 5px 10px green, 10px 10px 10px blue, 15px 15px 15px orange;

          box-shadow: 5px 5px 10px green, 10px 10px 10px blue, 15px 15px 15px orange;

}

 

 

 

22. Import - jak správně na importy v SCSS (Sass)

https://youtu.be/YfkPH9FCsGM

 

Vytvoříme novou složku partials a přetáhneme tam _mixins.scss a _variables.scss

 

Style.SCSS

Zde musíme změnit cestu naimportovaných souborů

@import "partials/variables";

@import "partials/mixins";

 

Další typy souborů, které se moc často nevyužívají

@import url(); // Například import fontu

@import "http://"; // importujeme něco z url adresy

@import "nazevSouboru.scss"; // i jiné soubory než scss

@import "style-screen" screen; // např. pro importování query

 

 

 

23. Nesting - co to je

https://youtu.be/b_Wkpbhs7VM

 

Index.html

         

       

 

       

 

       

 

   

 

Style.SCSS

// === Klasická CSS ===

// .first-list {

//     font-size: 23px;

// }

 

// .first-list li {

//     color: blue;

// }

 

// === Nesting (přepsaná CSS nahoře) ===

.first-list {

    font-size: 23px;

 

    li {

        color: blue;

    }

}

 

 

 

Style.CSS

.first-list {

  font-size: 23px;

}

 

.first-list li {

  color: blue;

}

 

 

 

 

 

 

24. Nesting - procvičení nestingu

https://youtu.be/GLr0poSfuwI

 

Index.html

 

  • Sešit
  • Tužka
  • Kružítko

           

     

           

     

           

     

       

     

    Style.SCSS

    // === Nesting ===

    .first-list {

        font-size: 23px;

     

        li {

            color: blue;

     

            a {

                text-decoration: none;

            }

        }

    }

     

     

    Style.CSS

    .first-list {

      font-size: 23px;

    }

     

    .first-list li {

      color: blue;

    }

     

    .first-list li a {

      text-decoration: none;

    }

     

    25. Nesting - nesting a hover (& v SCSS a Sass)

    https://youtu.be/GITKROV8DEc

     

    Index.html

     

    Lorem ipsum dolor sit, amet consectetur adipisicing Toto je odkaz elit. Impedit, nemo odio unde provident iusto odit magnam inventore soluta Toto je odkaz debitis placeat quisquam harum ut cupiditate distinctio enim consectetur dignissimos ratione dolor.

     

     

    Style.SCSS

    a {

        color: red;

        text-decoration: none;

        font-size: 18px;

     

        &:hover {

            color: blue;

        }

    }

     

    Style.CSS

    a {

      color: red;

      text-decoration: none;

      font-size: 18px;

    }

     

    a:hover {

      color: blue;

    }

    26. Funkce - Co jsou to funkce 

    https://youtu.be/ac1u6pX4vbg 

     

    V CSS používáme různé zápisy barev. Jeden z nich je pomocí rgb. Může vypadat např. takto:

    color: rgb(35, 35, 199);

     

    Co dělá rgb? Do rgb pošlete čísla - množství červené barvy (r = red), množství zelené barvy (g = green) a množství modré barvy (b = blue). My jsme dali 80 množství červené, 220 množství zelené a 180 množství modré (množství může být vždy od 0 do 255).

    To, na co se zde díváme, je funkce. Tato funkce se jmenuje rgb a poslali jsme do ní hodnoty. A tato funkce nám vrátí konkrétní barvu. A přesně tím jsou specifické funkce:

     

     

     

    27. Funkce - darken a lighten (přednastavené funkce v SCSS)

    https://youtu.be/UTz0AGYGSBI

     

    Style.SCSS

    Pro ztmavení používáme funkci darken

    a {

        color: red;

        text-decoration: none;

        font-size: 18px;

     

        &:hover {

            color: darken(rgb(11, 11, 190), 30%);

        }

    }

     

    Style.SCSS

    Pro zesvětlení používáme funkci lighten

    a {

        color: red;

        text-decoration: none;

        font-size: 18px;

     

        &:hover {

            color: lighten($main-color, 10%);

        }

    }

     

     

     

    28. Funkce - transparentize (přednastavené funkce v SCSS)

    https://youtu.be/1ohu_ZomgQ4

     

    Style.SCSS

    Pro průhlednost používáme přednastavenou funkci transparentize

    a {

        color: red;

        text-decoration: none;

        font-size: 18px;

        border-bottom: 2px solid transparentize(orange, 0.5);

     

        &:hover {

            color: darken(rgb(11, 11, 190), 30%);

        }

    }

     

     

     

    29. Funkce - vlastní funkce a jak je zapsat

    https://youtu.be/r1NM6ugC1oM

     

    Vytvoříme si ve složce partials nový soubor _functions.scss. Do něj budeme vkládat naše vytvořené funkce.

     

    Style.SCSS

    @import "partials/variables";

    @import "partials/mixins";

    @import "partials/functions";

     

    _functions.SCSS

    @function sum($number1, $number2){

       @return $number1 + $number2;

    }

     

    Style.SCSS

    .bigger-button {

        @include myButton;

        padding: 10px 15px;

        font-size: sum(15px, 2px);

    }

     

    30. Funkce - praktičtější příklad vlastní funkce

    https://youtu.be/2qnTVGrkSzw

     

    _functions.SCSS

    @function em($pixels, $basicValue: 16px){

        @return ($pixels / $basicValue) * 1em;

    }

     

    Style.SCSS

    body {

        background: $secondary-color;

        font-size: 16px;

    }

     

    Style.SCSS

    .bigger-button {

        @include myButton;

        padding: em(10px) em(15px);

        font-size: 1em;

    }

     

     

     

     

     

     

    31. Dědění - extend

    https://youtu.be/dpGsCmt-7zQ

     

    Index.html

    Přidáme si dva odstavce s odlišnými classami

     

    Toto je pouze upozornění

     

     

    Chybová hláška

     

     

    Style.SCSS

    Klásu error-notification rozšíříme o všechny vlastnosti normal-notification

    .normal-notification {

        color: white;

        font-size: 20px;

        background: red;

        width: 220px;

        text-align: center;

    }

     

    .error-notification {

        @extend .normal-notification;

        border: 5px solid blue;

    }

     

    Style.CSS

    Takto vypadá výsledek v klasických CSS

    .normal-notification, .error-notification {

      color: white;

      font-size: 20px;

      background: red;

      width: 220px;

      text-align: center;

    }

     

    .error-notification {

      border: 5px solid blue;

    }

     

     

     

     

     

    32. Dědění - extend v media query

    https://youtu.be/dPaTsDhf7dg

     

    Style.SCSS

    Pokud chceme vrámci media query rozšířit jednu klásu o druhou, tak tato druhá klása musí být uvnitř celého query. Takto je to zapsané správně a bude to fungovat.

    @media only screen {

        .test-class {

            color: blue;

        }

     

        .another-class {

            @extend .test-class;

            font-size: 30px;

        }

    }

     

    Style.SCSS

    Takto by nám to bohužel nefungovalo. Klása test-class je mimo query.

    .test-class {

        color: blue;

    }

     

    @media only screen {

       

        .another-class {

            @extend .test-class;

            font-size: 30px;

        }

       

    }

     

     

     

     

    33. Dědění - extend a negenerovaný obsah SCSS do CSS (tzv. extend-only)

    https://youtu.be/WjKZbj5J-oU

     

    Style.SCSS

    Pokud potřebujeme mít v kódu část, kterou nechceme přegenrovat do klasického CSS, tak stačí před název napsat znak procent (%).

    %test-only {

        font-style: italic;

    }

     

    .sub-title {

        @extend %test-only;

        font-size: 28px;

    }

     

    Style.CSS

    V klasických stylech vidíme, že žádné test-only v nich není

    .sub-title {

      font-style: italic;

    }

     

    .sub-title {

      font-size: 28px;

    }

     

     

    34. Dědění - extend pro neexistující classu

    https://youtu.be/CjjJpAfE1QQ

     

    Style.SCSS

    Co když klásu new-class rozšíříme o klásu, která neexistuje? Co se stane? Vyhodí nám to chybu. Takový chybový zápis by vypadal takto.

    .new-class {

        @extend .dont-exists;

        font-size: 45px;

    }

     

    Style.SCSS

    Pokud ale za klásu napíšeme !optional, tak to znamená, že pokud klása existuje, tak se má použít a pokud neexistuje, tak se má jít normálně dál. Žádnou chybu nám to nevyhodí.

    .new-class {

        @extend .dont-exists !optional;

        font-size: 45px;

    }

     

     

     

    35. Dědění - extend VS mixins

    https://youtu.be/7S4QeFv9yA8

     

    Extend generuje více selektorů, ale negeneruje zduplikovaný kód.

    .normal-notification, .error-notification {

      color: white;

      font-size: 20px;

      background: red;

      width: 220px;

      text-align: center;

    }

     

    Mixiny mohou v určitých případech generovat více duplicitního kódu. Protože jednu mixinu použiji na více místech = duplikovaný kód.

     

     

    36. Podmínky - if a else v SCSS (Sass)

    https://youtu.be/6BPYtODjB38

     

    Style.SCSS

    Podmínky se označují slovem if. Musí být ale před ním zavináč. Poté následuje podmínka a pokud je podmínka pravdivá, tak se provede část v prvních složených závorkách (v našem případě bude font-size 12 pixelů). Pokud podmínka není pravdivá, tak se provede část v druhých složených závorkách (v našem případě by bylo font-size 20 pixelů).

    $font-size: big;

     

    body {

        background: $secondary-color;

     

        @if $font-size == small {

            font-size: 12px;

        } @else {

            font-size: 20px;

        }  

    }

     

     

     

    37. Podmínky - if, else, else if

    https://youtu.be/0YvaGjVAi6c

     

    Style.SCSS

    Pokud může podmínka nabývat více hodnot (např. small, normal a big), tak se nám bude hodit použití @else if, které je následované podmínkou. Pokud má proměnné $font-size hodnotu small, tak bude font-size 12 pixelů. Pokud má hodnotu normal, tak bude mít font-size hodnotu 16 pixelů. A pokud je big, tak 20 pixelů.

    // Font-size může mít hodnoty: small, normal a big

    $font-size: big;

     

    body {

        background: $secondary-color;

     

        @if $font-size == small {

            font-size: 12px;

        } @else if $font-size == normal {

            font-size: 16px;

        } @else if $font-size == big {

            font-size: 20px;

        }

    }

     

     

     

     

    38. Podmínky - vytváříme dark, light a normal verzi stránek pomocí podmínky

    https://youtu.be/4CJZs_cRTJ0

     

    _variables.scss

    // Theme: light, dark, normal

    $theme: dark;

     

     // === COLORS ===

     $main-color: blue;

     $secondary-color: yellow;

     $ternary-color: red;

     $text-color: black;

     

     // === SIZES ===

     $header-height: 180px;

     $footer-height: 220px;

     

     // === FONTS ===

     $font-size: 35px;

     

     

    @if $theme == dark {

        $secondary-color: black;

        $text-color: #fff;

    } @else if $theme == light {

        $secondary-color: #fff;

    }

     

     

     

     

    39. Podmínky a mixiny - měníme stránky přepsáním jedné proměnné

    https://youtu.be/LqSf92QSZpo

     

    _variables.SCSS

    // Značka (brand): pizza, coffee

    // Pizza bude chtít podtržené nadpisy

    // Kavárna bude chtít jinou hnědou barvu odkazů

    $brand: pizza;

     

    _mixins.scss

    @mixin pizza {

        @if $brand == pizza {

            @content;

        }

    }

     

    @mixin coffee {

        @if $brand == coffee {

            @content;

        }

    }

     

    Style.SCSS

    h2 {

        @include big-text;

        @include pizza {

            text-decoration: underline;

        }

    }

     

     

     

    Style.SCSS

    h2 {

        @include big-text;

        @include pizza {

            text-decoration: underline;

        }

    }

     

    Style.SCSS

    a {

        text-decoration: none;

        font-size: 19px;

        border-bottom: 2px solid transparentize(orange, 0.5);

       

        @include coffee {

            color: rgb(201, 128, 19);

        }

     

        &:hover {

            color: darken(rgb(11, 11, 190), 30%);

        }

    }

     

    40. Matematika v SCSS - matematické operace

    https://youtu.be/3qxbMesFKwU

     

    Index.html

       

     

       

     

    Style.SCSS

    .result {

        font-size: $math-results;

    }

     

    _variables.scss - sčítání

    $math-results: 3px + 4px;

    // výsledek je 7px

     

    _variables.scss - odčítání

    $math-results: 6px - 4px;

    // výsledek je 2px

     

    _variables.scss - násobení - POZOR

    $math-results: 6px * 4px;

    // toto není podporovaná operace!

     

     

    _variables.scss - správné násobení

    $math-results: 6px * 4;

    // výsledek je 24px

     

    Jak využít násobení

    $math-results: 6px * 4px / 3px;

    // výsledek je 8px

    // 6px * 4px vrátí 24px * px

    // 24px * px / 3px = 24px/3 * px/px = 8px * 1 = 8px

     

    Kompatibilní jednotky

    $math-results: 1in - 6px;

    // výsledek je 0.9375in

    (Palec je v ČR - 26,3 mm)

     

    Nekompatibitlní jednotky

    $math-results: 1em - 6px;

    // vyhodí chybu - nekompatibilní jednotky

     

    Špatné dělení

    $math-results: 8px / 4px;

    // nevyhodí chybu, ale výsledek je pouze 2

     

    Jak správně dělit

    $math-results: 8px / 4;

    // výsledek je 2px

     

    41. Matematika v SCSS - matematika a barvy

    https://youtu.be/l2I-adLcKQo

     

    Index.html - přepíšeme font-size na color

    .result {

        color: $math-results;

    }

     

    _variables.scss

    Zde je pár příkladů. Nejde o výsledek, ale o to, jaký je princip

    $math-results: #333 + #777;

    // výsledek je #aaaaaa

    // podívat se na paletu barev, jak se barvy posunula

     

    $math-results: #090807 - #030201;

    // výsledek je #060606

    // podívat se na paletu barev, jak se barvy posunula

     

    $math-results: #123465 * 2;

    // výsledek je #2468ca

     

     

    $math-results: #222 * #040404;

    // výsledek je ##888888

     

    $math-results: #888888 / 2;

    // výsledek je #444444

     

    42. Cykly - cyklus for v SCSS a Sass

    https://youtu.be/T6iDFNg7ADM

     

    Style.SCSS

    @for $i from 1 through 6 {

        .col-#{$i} {

            width: $i * 5em;

        }

    }

     

    Style.CSS

    .col-1 {

      width: 5em;

    }

     

    .col-2 {

      width: 10em;

    }

     

    .col-3 {

      width: 15em;

    }

     

    .col-4 {

      width: 20em;

    }

     

    .col-5 {

      width: 25em;

    }

     

    .col-6 {

      width: 30em;

    }

     

    Style.SCSS

    Pokud místo slova through napíšeme to, tak se cyklus provede pouze 5x (od 1 do 5)

    @for $i from 1 to 6 {

        .col-#{$i} {

            width: $i * 5em;

        }

    }

     

    Style.CSS

    .col-1 {

      width: 5em;

    }

     

    .col-2 {

      width: 10em;

    }

     

    .col-3 {

      width: 15em;

    }

     

    .col-4 {

      width: 20em;

    }

    .col-5 {

      width: 25em;

    }

    43. Cykly - cyklus each a list

    https://youtu.be/u-iCKIwVeWo

     

    Style.SCSS

    // === Each cyklus ===

    // List

    $students: david, harry, ron, hermiona;

     

    @each $one-student in $students {

        .#{$one-student}-profile {

            background-image: url("img/#{$one-student}.png");

        }

    }

     

    Style.CSS

    .david-profile {

      background-image: url("img/david.png");

    }

     

    .harry-profile {

      background-image: url("img/harry.png");

    }

     

    .ron-profile {

      background-image: url("img/ron.png");

    }

     

    .hermiona-profile {

      background-image: url("img/hermiona.png");

    }

     

     

    44. Cykly - cyklus each a map

    https://youtu.be/H9mMUqr39v4

     

    Style.SCSS

    // Map

    $font-size: (very-small: 7px, small: 10px, medium: 15px, large: 20px);

     

    @each $name, $size in $font-size {

        .#{$name} {

            font-size: $size;

        }

    }

     

    Style.CSS

    .very-small {

      font-size: 7px;

    }

     

    .small {

      font-size: 10px;

    }

     

    .medium {

      font-size: 15px;

    }

     

    .large {

      font-size: 20px;

    }

     

     

    45. Cykly - cyklus while a pozor na nekonečný cyklus

    https://youtu.be/spBzPHurylg

     

    Style.SCSS

    // === While cyklus ===

    $j: 1;

    @while $j <= 4 {

        .picture-#{$j} {

            width: $j * 10%;

        }

        $j: $j + 1;

    }

     

    $k: 8;

    @while $k >= 1 {

        .picture-#{$k} {

            width: $k * 10%;

            height: 300px;

        }

        $k: $k - 1;

    }

     

     

    Jdeme tvořit vlastní stránky v SCSS

     

    46. Příprava projektu a stažení obrázků

    https://youtu.be/dpezXf4u6Ng

     

    Ve VS code (popř. v jiném editoru) si vytvoříme:

    • index.html,
    • style.scss,
    • složku img.

     

    Do index.html vložíme běžnou strukturu a propojíme ho se style.css (ty ještě v tuto chvíli nemáme vytvořené).

     

    Do složky img uložíme 4 obrázky, které si můžete stáhnout zde:

    https://bit.ly/scsskestazeni

     

    Klikneme dole na liště na Watch Sass a style.css by se nám měl vytvořit (style.css.map můžete ignorovat, ale nemažeme ho).

     

    Struktura bude vypadat takto (Thumbs.db se vám občas vytvoří jako pomocný soubor, ale nepotřebujeme ho):

     

     

    47. Tvorba HTML

    https://youtu.be/tdmUktTCX3A

     

    Index.html

     

       

     

           

    David´s Design

     

       

     

     

       

     

           

               

    O společnosti David´s Design

     

               

    Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatum, non porro! Laudantium accusantium eos cupiditate voluptas ullam. Illum, ut, ipsum iste sapiente tenetur blanditiis deleniti doloribus, reprehenderit voluptatibus corrupti officia.

                Aperiam in officia reiciendis fugiat! Vel laudantium quo accusamus! Nesciunt, ratione molestiae. Qui debitis optio consequatur at dolor necessitatibus amet reprehenderit sunt delectus, placeat ex beatae praesentium iusto nulla quia?

                Velit in rerum nisi recusandae deleniti, nihil nemo veniam, aut mollitia facere quod omnis voluptates consequuntur nesciunt sed ipsam labore accusantium maxime, repudiandae reprehenderit dolor perferendis animi. Rerum, numquam impedit

     

           

           

               

                   

                       

                        Zjistit více

                   

                   

                       

                        Zjistit více

                   

               

               

               

                   

                       

                        Zjistit více

                   

                   

                       

                        Zjistit více

                   

               

           

       

     

     

       

     

           

    © David Šetek 2021, Všechna práva vyhrazena

     

       

     

     

     

     

     

    48. Body, partials, mixins, variables

    https://youtu.be/SLVGgK6hGjo

     

    Založte si ve složce partials dva soubory. První bude _mixins.scss a druhý bude _variables.scss

     

    Style.SCSS

    @import "partials/variables";

    @import "partials/mixins";

     

    body {

        background-color: $body-background;

        @include container;

    }

     

    _mixins.SCSS

    @mixin container {

        width: 1200px;

        margin: 0 auto;

    }

     

    _variables.SCSS

    // === COLORS ===

    $body-background: #fff;

     

     

    49. Stylujeme hlavičku a patičku pomocí SCSS

    https://youtu.be/dp4EdbFEGxU

     

    Style.SCSS

    header {

        height: $header-height;

        @include header-footer-style;

     

        h1 {

            margin-top: 0;

            line-height: $header-height;

        }

    }

     

    footer {

        height: $footer-height;

        @include header-footer-style;

       

        p {

            line-height: $footer-height;

        }

    }

     

    _mixins.SCSS

    @mixin header-footer-style {

        background: $header-footer-background;

        color: $text-head-foot-color;

        text-align: center;

    }

     

    _variables.SCSS

    // === COLORS ===

    $body-background: #fff;

    $header-footer-background: rgb(75, 15, 60);

    $text-head-foot-color: #fff;

     

    // === SIZES ===

    $header-height: 50px;

    $footer-height: 50px;

     

     

    50. Stylujeme sekci about us

    https://youtu.be/JHu4DD7SY-Q

     

    Style.SCSS

    .about-us {

     

        h2, p {

            color: $text-color;

        }

    }

     

    _variables.SCSS

    $text-color: black;

     

     

    51. Tvoříme funkci pro vícesloupcový layout (grid)

    https://youtu.be/SHjIZkE1sn8

     

    Založte si nový soubor _functions.SCSS ve složce partials

     

    _functions.SCSS

    @function col-width($columns: 12, $page-width: 100%, $gap: 0.1%){

        @return ($page-width - $gap*($columns - 1)) / $columns;

    }

     

    _mixins.SCSS

    @mixin theme-box {

        width: 6 * col-width();

    }

     

    Style.SCSS

    .theme {

        @include theme-box;

        display: inline-block;

    }

     

     

     

    52. Stylujeme obrázky a odkazy

    https://youtu.be/5hLqxupk9B8

     

    Style.SCSS

    .theme {

        @include theme-box;

        display: inline-block;

     

        img {

            width: 70%;

            display: block;

            margin: 0 auto;

            @include my-border-radius;

        }

     

        a {

            text-align: center;

            display: block;

            width: 100px;

            margin: 10px auto;

            @include button;

        }

    }

     

    _mixins.scss

    @mixin button {

        text-decoration: none;

        background: $header-footer-background;

        color: #fff;

        padding: 10px 15px;

        border: $ordinary-border;

        @include my-border-radius;

    }

     

    _variables.SCSS

    // === COLORS ===

    $body-background: #fff;

    $header-footer-background: rgb(75, 15, 60);

    $text-head-foot-color: #fff;

    $text-color: black;

    $ordinary-border: 2px solid black;

     

     

    53. Přidáváme hover na tlačítko pomocí SCSS

    https://youtu.be/2FodkXTWQTs

     

    Style.SCSS

      a {

            text-align: center;

            display: block;

            width: 100px;

            margin: 10px auto;

            @include button;

     

            &:hover {

              background: lighten($header-footer-background, 10%);  

            }

        }

     

     

     

     

    54. Tvoříme dark a light verzi webu

    https://youtu.be/LoMyvydOLXk

     

    _variables.SCSS

    // Theme: light, dark

    $theme: dark;

     

    // For LIGTH theme

    // === COLORS ===

    $body-background: #fff;

    $header-footer-background: rgb(75, 15, 60);

    $text-head-foot-color: #fff;

    $text-color: black;

    $ordinary-border: 2px solid black;

     

    // === SIZES ===

    $header-height: 50px;

    $footer-height: 50px;

     

     

    // For DARK theme

    @if $theme == dark {

        $body-background: black;

        $text-color: white;

        $ordinary-border: 2px solid white;

        $header-footer-background: darken(rgb(75, 15, 60), 5%);

     

        $header-height: 80px;

        $footer-height: 80px;

    }

     

    Kód celé stránky ke stažení

    Kód celé stránky ke stažení zde:

    https://bit.ly/scsskestazeni

     

    • Sešit
    • Tužka
    • Kružítko
      1. mají název,
      2. posíláte do nich hodnoty,
      3. funkce s hodnotami něco dělají (např. sčítají) a vrátí výsledek

Marek Mihók