Z Figmy do webu

Ciele

  1. Zadefinovať si základné štýly dizajnového jazyka v podobe CSS štýlov s využitím premenných.
  2. Naučiť sa vytvárať a pracovať s CSS štýlmi pre automatické usporiadanie (layout) elementov: flexbox a grid.
  3. Naučiť sa pracovať s vývojárskym módom nástroja Figma.
  4. Vyskúšať si responzívny dizajn webových rozhraní.
  5. Pripraviť si projekt a v ňom layout pre hlavnú stránku, do ktorého budeme neskôr ukladať komponenty.

Príprava pred cvičením

Úloha 0.1

Pozrite si druhú časť prednášky 9 aby ste sa naučili transformovať štýly z Figmy do CSS. Zároveň sa naučíte, ako vytvárať a používať CSS premenné na zadefinovanie jednoduchých štýlov dizajnového jazyka. Naučte sa používať mód pre vývojárov (Dev Mode) nástroja Figma (návod na aktiváciu nájdete na stránke prednášky). Taktiež sa naučte tvoriť flexibilné bloky v HTML (flexbox), ktoré nám umožňujú automaticky usporiadať obsah na základe jednoduchých CSS pravidiel. Na prehliadanie vlastností v nástroji Figma môžete použiť štandardné zobrazenie, ale aj vyššie spomenutý mód pre vývojárov.

Úloha 0.2

Zopakujte si základy responzívneho dizajnu z predmetu KProg (Moodle -> Predmet KProg -> Responzívny dizajn pre webové rozhranie (video).

Úloha 0.3

Vytvorte si nový projekt v Intellij Idea (alebo Webstorm).

Poznámka

Zatiaľ stačí jednoduchý prázdny projekt s jedným HTML a jedným CSS súborom.

Použité technológie

Na tomto cvičení používame čisté HTML a CSS, venujeme sa spoločným štýlom a responzívnosti.

Postup

Krok 1: Dizajnový jazyk: Farby, fonty, základné štýly projektu

Úloha 1.1

Na základe dizajnového jazyka si zadefinujte základné CSS premenné a štýly vášho projektu. Sústreďte sa hlavne na typografiu, farby a také štýly a vlastnosti, ktoré sú spoločné pre celý prototyp.

Na príklade nižšie môžete vidieť zadefinovanie CSS premenných (sekcia :root{}) a ich použitie var(--nazov-premennej na definovanie CSS štýlov pre celý projekt.

:root {
--color--primary-white: #FFF;
--color--primary-black: #1E1E1E;
--color--secondary-blue-light: #A3E9F6;
--color--grayscale-gray100: #F5F5F5;

--text-color: var(--color--primary-black);
--text-color-secondary: #757575;
--title-hero: 4.5rem;
--subtitle: 2rem;
--heading: 1.5rem;
}

body {
  font-family: "Roboto Condensed", serif; font-optical-sizing: auto;
  color: var(--text-color); line-height: 100%;
}

h1, h2, h3, h4, h5 { line-height: 120%; }

h1 { font-size: var(--title-hero); }
h2 { font-size: var(--subtitle); color: var(--text-color-secondary); }

Poznámka

Zoznam premenných používaných vo vašom projekte by sa mal odvíjať od použitého dizajnového jazyka. Ak preskúmate daný prvok vo Figme (Pravý klik -> Go to Component), dostanete sa k Figma projektu zvoleného dizajnového jazyka a v ňom môžete vidieť všetky preddefinované štýly. Vo webovom projekte vám z nich stačí zadefinovať iba tie, ktoré ste reálne použili. Je možné využiť aj zoznam premenných knižnice dizajnového jazyka (príklady v ďalšom module).

Upozornenie

Neodporúčame používať Bootstrap, odporúčame skôr jeho modernejšie alternatívy (napr. Tailwind, Pure CSS či Foundation).

Krok 2: Usporiadanie obsahu: Layout, flexbox

Úloha 2.1

Využite flexibilné usporiadanie prvkov (flexbox) alebo mriežky (grid) pre zadefinovanie usporiadania obsahu (layout) jednej obrazovky vášho prototypu (napríklad úvodnej). Inšpirujte sa prednáškou.

Začíname zatiaľ jednou obrazovkou, pretože zvyšné obrazovky môžu mať spoločný layout, iba budú zobrazovať iný obsah. Cieľom nemá byť viacero HTML súborov, pričom každé bude mať iný obsah, ale skôr jedno HTML s množstvom komponentov. Technológia React v spolupráci s nástrojom Figma presne mapujú tento komponentový prístup. Začneme ho aplikovať na budúci týždeň.

Poznámka

Pri definovaní automatického usporiadania obsahu môžete využiť vizuálnu príručku k zobrazeniu flexbox.

Vo vzorovom príklade príkladu titulky.com (na konci tohto modulu) môžete vidieť základ definície usporiadania hlavnej obrazovky pomocou flexibilného usporiadania, ktoré sa presne mapuje na štruktúru modelu hlavnej stránky vo Figme.

Alternatíva k flexibilnému usporiadaniu: mriežka (grid)

Ako alternatíva k flexibilnému usporiadaniu (ktoré sa automaticky prispôsobuje šírke obrazovky a dokáže obsah aj zalamovať podľa potreby, no nedokáže efektívne definovať presný počet riadkov alebo stĺpcov ako mriežku) napríklad pre tabuľky, je možné použiť štýl mriežky (grid).

Na zadefinovanie presného počtu riadkov alebo stĺpcov, do ktorých sa budú elementy automaticky usporadúvať, je možné použiť štýly grid-template-rows a grid-template-columns.

Krok 3: Responzívny web

Úloha 3.1

Webový prototyp vášho individuálneho projektu musí byť plne responzívny. Môžete sa inšpirovať aj príručkou pre responzívny dizajn.

Flexibilné usporiadanie prvkov alebo mriežka nám do istej miery zabezpečia prispôsobenie rozhrania veľkosti obrazovky. Na overenie použite vývojárske nástroje prehliadača, konkrétne nástroj pre testovanie responzívneho dizajnu.

Pri zabezpečení responzívneho zobrazenia však je niekedy potrebné preusporiadať obsah obrazovky tak, že staticky definované štýly na to už nestačia. Napríklad, v našej prípadovej štúdii zoznam top filmov alebo seriálov je možné usporiadať do riadka, no na úzkej obrazovke by to kvôli nedostatku priestoru chcelo už zobrazenie do stĺpca. Na zadefinovanie vlastností pre zobrazenie na rôznych veľkostiach obrazoviek sa používajú tzv. media queries.

Príklad pre top filmy:

HTML:

<div class="section top-movies">
    <h3> Top Filmy </h3>
    <div class="card-list">
        <div class="card"></div>
        <div class="card"></div>
        <div class="card"></div>
    </div>
</div>

CSS:

.card-list { display: flex; flex-direction: row; gap: 48px; /*...*/ }

@media (max-width: 360px) {
  .card-list { flex-direction: column; gap: 16px; }
}
@media (max-width: 680px) {
  .card-list { gap: 24px; }
}

Zoznam kariet v sekcii top filmov je usporiadaný do riadka, no ak bude mať obrazovka menej ako 360px, bude sa zobrazovať do stĺpca. S rôznou šírkou obrazovky taktiež prispôsobujeme medzery medzi kartami (gap). Vyskúšajte si responzívnosť stránky v prehliadači.

Krok 4: Individuálne zadanie

Úloha 4.1

Pre projekt si vytvorte priestor na katedrovom GIT serveri s názvom začínajúcim na UX- a vždy pred začiatkom nasledujúceho cvičenia doň nahrajte aktuálny stav projektu.

Úloha 4.2

Vytvorte novú kópiu Miro boardu a do sekcie Prototyp 2: Webový prototyp vložte odkaz na git repozitár webového projektu.

Upozornenie

Týždne, v ktorých nebola na vašom git projekte žiadna aktivita, budú brané ako vynechané a spôsobia zníženie bodového hodnotenia zadania a vašej celkovej aktivity.

Upozornenie

Na vytvorenie HTML prototypu je možné použiť aj rôzne prídavné moduly nástroja Figma pre automatický export. Neodporúčame však odovzdávať takéto zadanie bez vykonania potrebných úprav: zahrnutie dizajnového jazyka, komponenty, layout-y, interaktívnosť, jednostránkové riešenie (single page application). Exportované zadania s minimálnym rozsahom úprav budú v poslednej odovzdávke hodnotené minimom bodov.

Vzorový príklad

Zdroje