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

1. diel - Úvod do responzívneho webdesignu

Vitajte pri kurze, kde sa naučíme prispôsobiť weby pre mobilné zariadenia.

Prečo robiť responzívne weby?

Poďme sa pre začiatok trochu namotivovať prečo sa vlastne snažiť svoje webové stránky prispôsobovať návštevníkom s mobilnými zariadeniami. Dôvody sú vlastne hneď 2.

Počet používateľov

Podľa štatistík statcounter.com používa väčšina ľudí na prístup na internet mobilný telefón:

Responzívne webdesign - Responzívne webdesign

V roku 2016 prekonali mobilné zariadenia v prístupe na internet klasické počítače. V januári dokonca prekročil podiel mobilných zariadení na internete 55 % celosvetovo. To znamená, že obrovská masa ľudí k nám príde s malou obrazovkou orientovanou na výšku as korektným zobrazením nášho webu na svojom mobile jednoducho počíta.

Bežný deň pre "závislákov na mobiloch" prebieha asi takto:

Prídu do školy či do práce a takmer neustále niekomu musia nutne písať, musia sa nutne pozerať na weby, čo samozrejme nepočká na ich osobné voľno. Z toho vyplýva, že je nutné weby optimalizovať, aby sa na ne dostal každý kedykoľvek a odkiaľkoľvek.

Mobile-first indexing

Druhým dôvodom je, že aj Google už používa na indexovanie mobilnú verziu stránok (tzv. mobile-first indexing). Keď nám nebude fungovať korektne, nebude sa mu páčiť a nebudú k nám dokonca teda ani chodiť ľudia alebo ich bude chodiť málo.

Responzívny webdesign

Spôsobov ako zobraziť na mobilných zariadeniach webovú stránku je mnoho, ale nie všetky sú dobré. Také zlé riešenie je, keď vytvoríme špeciálnu subdoménu pre mobily - takto vážne nie ! Určite nechceme vynakladať prostriedky na udržovanie dvoch webov, keď môžeme udržovať len jeden, stačí sa v zásade naučiť len pár moderných postupov.

Pojem responzívny dizajn označuje tvorbu stránky, ktorá sa dokáže prispôsobiť veľkosti displeja zariadenia podľa určitých pravidiel definovaných najčastejšie pomocou tzv. breakpointov, ktoré si predstavíme ďalej v kurze.

Hlavne si tento pojem nepomýlite s elastickými webmi, čo nie je nič iné ako šikovné využitie percent pre šírku a pixelov, či iných vhodných jednotiek, pre maximálnu šírku.

Náš prvý responzívny web

Vytvorme si teraz úplne jednoduchú stránku bez akéhokoľvek layoutu, ktorá bude obsahovať zatiaľ iba odsek textu. Kód HTML stránky bude nasledovný:

<!DOCTYPE html>
<html lang="cs">

    <head>
        <meta charset="UTF-8">
        <title>Neresponzivní web</title>
    </head>

    <body>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec condimentum dignissim varius. Phasellus lobortis libero vestibulum augue commodo, vitae finibus orci varius. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec a lacus eget felis molestie congue. Donec sed fermentum ex. Praesent eu ultrices sem. In in ante pellentesque, hendrerit nibh eu, accumsan ex. Nunc commodo viverra elementum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam in feugiat nunc. Ut bibendum lectus sollicitudin finibus aliquam.</p>
    </body>

</html>

A výsledok v prehliadači:

Tvoja stránka
localhost

To zatiaľ nie je nič nové, že?

Simulácia mobilného telefónu

Poďme sa na stránku pozrieť na mobile. Nemusíme hneď siahať do vrecka, možno to aj oveľa ľahšie. Keď zapneme pomocou klávesy F12 vývojárske nástroje v našom prehliadači, nájdeme tu ikonku, ktorá umožňuje nasimulovať ako bude web zobrazený na mobile (v Chrome je to táto):

Zobrazenie webu na mobile v Google Chrome  - Responzívne webdesign - Responzívne webdesign

Po stlačení sa text zobrazí korektne aj na mobilnom zariadení:

Zobrazenie webu na mobile v Google Chrome  - Responzívne webdesign - Responzívne webdesign

Deje sa tak z dôvodu, že sme zatiaľ neurčili žiadnu veľkosť žiadneho prvku. Poďme pod text vložiť odznak "Bestseller!" o veľkosti 100x100px:

<p style="background: blue; color: white; border-radius: 999px; width: 100px; height: 100px; vertical-align: top; display: flex; align-items: center; justify-content: center; ">Bestseller!</p>

Výsledok v mobilnej verzii prehliadača:

Zobrazenie webu na mobile v Google Chrome  - Responzívne webdesign - Responzívne webdesign

Vidíme, že odznak je z nejakého dôvodu miniatúrny, aj keď na desktope vyzerá normálne. Ako je to možné?

Aby sme problém pochopili, pozrime sa ako to s tými pixelmi na displeji vlastne je.

Fyzický pixel vs. CSS pixel

Možno si pamätáte, že v minulosti sa obrazovky fyzicky zväčšovali. 14" monitory najprv mali rozlíšenie 640 bodov na šírku, potom 800, až sme sa dnes dostali na 1920 pixelov na 27" obrazovke. Všetky tieto "zväčšenia" znamenali ale aj zväčšenie obrazovky, takže jeden pixel meral približne stále rovnako.

Úsvit retina displejov

Toto trvalo až firma Apple prišla s novým trendom a to, že do rovnakého displeja vložila na šírku 2x toľko pixelov, celkovo mal displej teda 4x toľko bodov (2x toľko na šírku aj na výšku), ale uhlopriečka displeja mala stále rovnako palcov. Týmto displejom od Apple sa hovorí retina displeja. Daný zlom nastal medzi telefónmi iPhone 3 a iPhone 4 a odštartoval trend, ku ktorému sa pripojili všetky ostatné výrobcovia mobilných zariadení. Na displeji mobilov dnes nie sú body už vidieť voľným okom a text sa stal oveľa zaoblenejší a lepšie čitateľný.

Aby sme zobrazili bod rovnako veľký ako bol bod na displeji iPhone 3, musíme teda na iPhone 4 rozsvietiť vlastne 4 fyzické pixely:

1× vs 2× display - Responzívne webdesign - Responzívne webdesign

Tieto vyššie rozlíšenia sú často označované číslom a písmenom x (ako koľkokrát je pixel menší ako býval). Väčšina mobilných zariadení má rozlíšenie 2x a viac. Čo sa týka desktopov a tabletov, tie sú väčšinou stále na 1x, niekedy 2x. Možno vám už svíta, kde je problém.

CSS pixely

V našej ukážke Chrome emuluje displej s veľkým počtom fyzických pixelov na malom rozmere. My sme určili, že náš obrázok má 100px šírku. Jednotka px v predvolenom nastavení zodpovedá 1 fyzickému pixelu! To preto, aby sa staré webové stránky, ktoré počítajú s veľkým desktopovým displejom, zobrazili na telefóne nerozsypané. Pretože fyzických pixelov má mobilný displej na šírku tisíce, zaberá náš 100px odznak naozaj len malú časť.

Aby sme problém opravili, musíme prehliadaču povedať, že počítame s tým, že displej je malý a pixel môže byť naozaj braný podľa tej pôvodnej normy, kedy jeden CSS pixel sú napr. rovno 4 fyzické. Šírka obrazovky na mobile potom meria obvykle niečo medzi 320px-360px a náš odznak bude vyzerať normálne, pretože bude mať reálne treba 400px. Ako na to?

Viewport

HTML umožňuje nastaviť tzv. viewport, čo je vlastne rozmer „okná“, ktorým sa na web pozeráme. Do hlavičky <head> si pridáme nasledujúcu <meta> element, ktorým hovoríme, že nechceme CSS pixel prevádzať na pixel fyzický, ale chceme pomer 1:1:

<meta name="viewport" content="width=device-width, initial-scale=1"/>

Môžeme sa pozrieť na nový výsledok v simulátore webového prehliadača:

Zobrazenie responzívneho webu na mobile v Google Chrome  - Responzívne webdesign - Responzívne webdesign

1px teraz zodpovedá asi 1/96 palca ako na počítači, tak na mobilnom telefóne. Odznaky sa na stránku zmestia asi 3, pretože jeden má 100px a celá stránka má niečo cez 300px.

Nesmieme zabudnúť na to, že teraz je tá istá stránka na telefóne široká len 320px, ale na desktope napr. 1000px !. My na nej skoro nič nemáme, takže nám to nevadí, ale ak by sme tam mali napr. obrázok so šírkou 640px, vytiekol by na mobile z displeja.

Ďalej v kurze si ukážeme, ako pre rôzne šírky stránky prispôsobiť jej obsah, najmä obrázky a navigáciu.

V budúcej lekcii, Responzívny webdesign pomocou Media Queries v CSS 3 , sa naučíme používať media queries a vysvetlíme si prečo ísť smerom k mobile first prístupu.


 

Všetky články v sekcii
Responzívne webdesign
Preskočiť článok
(neodporúčame)
Responzívny webdesign pomocou Media Queries v CSS 3
Článok pre vás napísal Štěpán Zavadil
Avatar
Užívateľské hodnotenie:
1 hlasov
Autor se věnuje tvorbě webových aplikací v JavaScriptu
Aktivity