Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

18. diel - Bootstrap - Flex utilities

V minulej lekcii, Bootstrap - Utilities, sme si predstavili všetky utility CSS frameworku Bootstrap okrem tých pre flexbox.

V dnešnom tutoriáli CSS frameworku Bootstrap sa začneme intenzívne venovať flexboxu. Naučíme sa používať smery a rôzne zarovnania.

Flex v Bootstrape

Príchod Flexboxu do CSS 3 štandardu znamenal zásadnú zmenu toho, ako sa elementy poziciujú. Niet divu, poziciovanie totiž do tej doby nebolo v CSS vôbec vyriešené a všetky doterajšie spôsoby ako na stránke niečo poskladať boli iba hacky. Využívalo sa triky ako nastavovanie elementov tak, aby sa vykresľovali ako tabuľky, pretože len tak ich bolo možné vycentrovať na výšku. Riešilo sa, aký typ elementu chceme vycentrovať na šírku a až podľa toho sme zvolili, či mu nastavíme automatický margin alebo ho obalíme do wrappera.

Týmto temným dňom web dizajnu je dnes už ale našťastie koniec. Flexbox dokáže napoziciovať a hlavne vycentrovať čokoľvek na stránke a to jedným univerzálnym spôsobom. Niet divu, že Bootstrap nad ním implementoval množstvo utility tried, vďaka ktorým môžeme elementy jednoducho poziciovať jednoduchým nastavením triedy.

Flex kontajner

Základným princípom flexboxu je, že aplikujeme vlastnosť display: flex na nejaký kontajner. Tento kontajner následne získa schopnosť poziciovať prvky, ktoré sú v ňom vložené. O pozíciu prvkov sa teda stará kontajner, nie prvky samotné. To je dôležitý princíp, na ktorom celá táto technológia stojí. Kontajner vytvoríme typicky z elementu <div>, ktorému priradíme triedu .d-flex. Už vieme, že písmeno "d" v názve triedy označuje, že modifikuje CSS vlastnosť display. Na vytvorenie inline kontajnera môžeme namiesto tejto triedy priradiť triedu d-inline-flex. Pri východiskovom správaní sa položky vkladajú zľava doprava a roztiahnu sa cez celú výšku kontajnera.

Flex kontajner vyzerá napríklad takto:

<div class="d-flex"></div>

Na vytvorenie kontajnera môžeme použiť aj nasledujúce responzívne triedy:

  • .d-sm-flex,
  • .d-sm-inline-flex,
  • .d-md-flex,
  • .d-md-inline-flex,
  • .d-lg-flex,
  • .d-lg-inline-flex,
  • .d-xl-flex,
  • .d-xl-inline-flex,
  • .d-xxl-flex,
  • .d-xxl-inline-flex.

Smer položiek

Ako ďalší krok nastavíme smer položiek, teda ako sa majú poskladať, ak ich je v kontajneri viac. Ak chceme napríklad vycentrovať len niečo a v kontajneri máme len jednu položku, smer udáva, aký smerom sa bude centrovať. Na určenie smeru používame triedy:

  • .flex-row - vodorovný smer (do riadku, zľava doprava), východisková hodnota keď triedu neuvedieme,
  • .flex-row-reverse - vodorovný smer pospiatky (do riadku, sprava doľava),
  • .flex-column - zvislý smer (do stĺpca, zhora nadol),
  • .flex-column-reverse - zvislý smer pospiatky (do stĺpca, zdola nahor).

Opäť môžeme využiť aj responzívnu verziu tried, ktoré dané správanie aplikujú až od určitej veľkosti viewportu:

  • .flex-row,
  • .flex-row-reverse,
  • .flex-column,
  • .flex-column-reverse,
  • .flex-sm-row,
  • .flex-sm-row-reverse,
  • .flex-sm-column,
  • .flex-sm-column-reverse,
  • .flex-md-row,
  • .flex-md-row-reverse,
  • .flex-md-column,
  • .flex-md-column-reverse,
  • .flex-lg-row,
  • .flex-lg-row-reverse,
  • .flex-lg-column,
  • .flex-lg-column-reverse,
  • .flex-xl-row,
  • .flex-xl-row-reverse,
  • .flex-xl-column,
  • .flex-xl-column-reverse,
  • .flex-lg-column-reverse,
  • .flex-xxl-row,
  • .flex-xxl-row-reverse,
  • .flex-xxl-column,
  • .flex-xxl-column-reverse.

Zarovnanie obsahu

Potom, čo sme triedou definovali smer hlavnej osi, môžeme nastaviť, ako sa má obsah v tomto smere zarovnať. Keďže smer môže byť ako vodorovný tak zvislý, namiesto termínov ako "dole" alebo "doprava" sa tu používajú termíny "začiatok" a "koniec". Na nastavenie zarovnania slúžia triedy:

  • .justify-content-start - zarovnanie od začiatku po koniec, východisková hodnota keď triedu neuvedieme,
  • .justify-content-end - zarovnanie od konca po začiatok,
  • .justify-content-center - zarovnanie na stred,
  • .justify-content-between - vyplnenie celého priestoru s položkami rovnomerne rozprestretými a s položkami po stranách,
  • .justify-content-around - vyplnenie celého priestoru s položkami rovnomerne rozprestretými a medzerami po stranách,
  • .justify-content-evenly - vyplnenie celého priestoru s položkami rovnomerne rozprestretými a s rovnakými rozostupmi medzi položkami aj na okrajoch kontajnera.

Opäť tu máme možnosť využiť všetky responzívne triedy ako je napríklad .justify-content-sm-start a ďalšie.

Hodnoty si vyskúšajme:

<p>justify-content-start:</p>
<div class="d-flex justify-content-start">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>justify-content-end:</p>
<div class="d-flex justify-content-end">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>justify-content-center:</p>
<div class="d-flex justify-content-center">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>justify-content-between:</p>
<div class="d-flex justify-content-between">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>justify-content-around:</p>
<div class="d-flex justify-content-around">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>justify-content-evenly:</p>
<div class="d-flex justify-content-evenly">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

Live ukážka v prehliadači:

Flex utilities in Bootstrap
flex.html

Ak nastavíme smer hlavnej osi na zvislý pomocou triedy .flex-column, docielime zarovnanie na výšku:

Flex utilities in Bootstrap
flex_second_a­xis.html

Zarovnanie položiek

Zarovnanie položiek nie je nič iné, než zarovnanie obsahu po druhej osi. Pokiaľ máme flexbox na riadok, nastavuje zarovnanie na výšku, inak nastavuje zarovnanie na šírku. Môžeme ho špecifikovať triedami:

  • .align-items-stretch - položky sa roztiahnu cez výšku/šírku kontajnera, východisková hodnota keď triedu neuvedieme,
  • .align-items-start - zarovnanie od začiatku po koniec,
  • .align-items-end - zarovnanie od konca po začiatok,
  • .align-items-center - zarovnanie na stred,
  • .align-items-baseline - rovnaké ako štart, ale zarovnáva podľa riadku textu. Ak majú položky inú veľkosť fontu, všetky budú zarovnané na jednu úroveň za začiatok kontajnera.

Opäť tu máme aj responzívne triedy, ktoré sú:

  • .align-items-sm-start,
  • .align-items-sm-end,
  • .align-items-sm-center,
  • .align-items-sm-baseline,
  • .align-items-sm-stretch,
  • .align-items-md-start,
  • .align-items-md-end,
  • .align-items-md-center,
  • .align-items-md-baseline,
  • .align-items-md-stretch,
  • .align-items-lg-start,
  • .align-items-lg-end,
  • .align-items-lg-center,
  • .align-items-lg-baseline,
  • .align-items-lg-stretch,
  • .align-items-xl-start,
  • .align-items-xl-end,
  • .align-items-xl-center,
  • .align-items-xl-baseline,
  • .align-items-xl-stretch,
  • .align-items-xxl-start,
  • .align-items-xxl-end,
  • .align-items-xxl-center,
  • .align-items-xxl-baseline,
  • .align-items-xxl-stretch.

Vyskúšajme si hodnoty:

<p>align-items-stretch:</p>
<div class="d-flex align-items-stretch bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-items-start:</p>
<div class="d-flex align-items-start bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-items-end:</p>
<div class="d-flex align-items-end bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-items-center:</p>
<div class="d-flex align-items-center bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-items-baseline:</p>
<div class="d-flex align-items-baseline bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

Výsledok v prehliadači:

Flex utilities in Bootstrap
flex_align_item­s.html

Zarovnanie samozrejme môžeme kombinovať, a teda zarovnať na stred ako zvisle, tak vodorovne:

<div class="d-flex align-items-center justify-content-center bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

Výsledok:

Flex utilities in Bootstrap
flex_both_axes.html

Align self

Aby zarovnaní nebolo málo, máme tu ešte tretie :) Align-self, ako už názov napovedá, neurčuje ako sú položky zarovnané voči kontajneru, ale ako sú zarovnané voči sebe, v každom riadku alebo stĺpci kontajnera. Príslušné triedy priraďujeme priamo položkám kontajnera, nie kontajneru samotnému ako v predchádzajúcich prípadoch.

Môžeme priradiť triedy:

  • .align-self-stretch - roztiahne položku po druhej osi, východisková hodnota keď triedu neuvedieme,
  • .align-self-start - zarovná položku na začiatok druhej osi riadku/stĺpca,
  • .align-self-end - zarovná položku na koniec druhej osi riadku/stĺpca,
  • .align-self-center - zarovná položku na stred druhej osi riadku/stĺpca,
  • .align-self-baseline - zarovná položku na začiatok druhej osi riadku/stĺpca, podľa základnej linky textu. Ak použijeme pri položkách jednotný font, funguje ako .align-self-start. Ak zvolíme inú veľkosť písma, budú všetky položky zarovnané na jednu úroveň za začiatok druhej osi riadku/stĺpca.

Responzívne varianty tried sú:

  • .align-self-sm-start,
  • .align-self-sm-end,
  • .align-self-sm-center,
  • .align-self-sm-baseline,
  • .align-self-sm-stretch,
  • .align-self-md-start,
  • .align-self-md-end,
  • .align-self-md-center,
  • .align-self-md-baseline,
  • .align-self-md-stretch,
  • .align-self-lg-start,
  • .align-self-lg-end,
  • .align-self-lg-center,
  • .align-self-lg-baseline,
  • .align-self-lg-stretch,
  • .align-self-xl-start,
  • .align-self-xl-end,
  • .align-self-xl-center,
  • .align-self-xl-baseline,
  • .align-self-xl-stretch,
  • .align-self-xxl-start,
  • .align-self-xxl-end,
  • .align-self-xxl-center,
  • .align-self-xxl-baseline,
  • .align-self-xxl-stretch.

Opäť si vyskúšajme hodnoty:

<p>align-self-stretch:</p>
<div class="d-flex bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white align-self-stretch">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-self-start:</p>
<div class="d-flex bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white align-self-start">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-self-end:</p>
<div class="d-flex bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white align-self-end">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-self-center:</p>
<div class="d-flex bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white align-self-center">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

<p>align-self-baseline:</p>
<div class="d-flex bg-warning" style="height: 85px;">
    <div class="bg-success p-2 m-1 text-white align-self-baseline">Item 1</div>
    <div class="bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

Live ukážka:

Flex utilities in Bootstrap
align_self.html

Miešanie flexboxu s margin:auto

Ak nastavíme nejakému elementu vo flex kontajneri margin-top: auto alebo margin-bottom: auto, odstavia sa všetky ďalšie prvky na koniec danej strany:

<div class="d-flex flex-column bg-warning" style="height: 250px;">
    <div class="bg-success p-2 m-1 text-white">Item 1</div>
    <div class="mt-auto bg-success p-2 m-1 text-white">Item 2</div>
    <div class="bg-success p-2 m-1 text-white">Item 3</div>
</div>

Výsledok:

Flex utilities in Bootstrap
flex_margin_au­to.html

V ďalšej lekcii, Bootstrap - Flex utilities 2, dokončíme flex utilities.


 

Ako sa ti páči článok?
Pred uložením hodnotenia, popíš prosím autorovi, čo je zleZnakov 0 z 50-500
Predchádzajúci článok
Bootstrap - Utilities
Všetky články v sekcii
Kompletný kurz CSS frameworku Bootstrap
Preskočiť článok
(neodporúčame)
Bootstrap - Flex utilities 2
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
43 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity