Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

13. diel - Bootstrap - Karty

V predchádzajúcom cvičení, Riešené úlohy k 11.-12. lekciu Bootstrap CSS frameworku, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Riešené úlohy k 11.-12. lekciu Bootstrap CSS frameworku , sme si predstavili list group. V tej dnešnej nás v CSS frameworku Bootstrap čakajú karty.

Karty

Cards sú v Bootstrap 4 novinkou a pôsobí tu ako univerzálny kontajnery na ďalší HTML obsah. V starších verziách sa k tejto funkcionalite využívali panely, wells (studne) a miniatúry (thumbnails). Tieto všetky 3 kontajnery teraz vytvoríme len za pomoci kariet priradením modifikačných tried.

Ukážka

Ukážme si kód karty, ktorá sa často používa napr. K výpisu položiek v e-shope. Bude obsahovať obrázok, titulok, podtitulok, popis a tlačidlo.

<div class="card" style="width: 20rem;">
    <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/itnetwork_tshirt.jpg" alt="Tričko ITnetwork">
    <div class="card-body">
        <h4 class="card-title">Tričko ITnetwork</h4>
        <h6 class="card-subtitle mb-2 text-muted">kolekce jaro-léto</h6>
        <p class="card-text">Programátorské tričko ze 100% bavlny pro všechny pravé geeky.</p>
        <a href="#" class="btn btn-primary">Do košíku</a>
    </div>
</div>

Do karty sme vložili naozaj veľa položiek, aby sme si ich predstavili. V praxi by lepšie vyzerala len s niektorými z nich. Výsledok v prehliadači:

Karty v Bootstrap
cards.html

Kartu vytvoríme ako inak, než divom sa triedou .card. V predvolenom nastavení sa karty rozťahujú cez celú šírku rodičovského elementu, tu sme tej našej špecifikovali šírku 20 rem. Úplne ideálne by bolo vložiť kartu do gridu, čím by bola jej šírka responzívne (viď ďalej). Rovnako tak môžeme použiť utility triedy ako napr. .w-50 pre 50% šírky a podobne.

Pre obrázok sme použili triedu .card-img-top. Ak by sme obrázok umiestnili dole, priradili by sme mu triedu .card-img-bottom. Posledné <div> má triedu .card-body a obsahuje akýkoľvek HTML obsah karty. Všimnite si, že aj nadpis má priradenú triedu .card-title, podnadpis .card-subtitle a nejaké ďalšie triedy pre margin a farbu. Bod s textom má triedu .card-text.

Karta len s .card-bodmi

Jednoduché karty môžeme vytvoriť len pomocou divov sa triedami .card a .card-body. Ku štýlovanie môžeme použiť štandardné pozadia a text utility.

Karty v Bootstrap
cards_pozadi.html

Ako vždy pri použití farebných utilít by sme mali pridať aj <span> sa triedou .sr-only s informáciami čo farba označuje pre hlasové čítačky.

Pomocou border utilít môžeme upravovať aj rámček, to sa hodí pre jemné farebné zvýraznenie karty:

Karty v Bootstrap
cards_pozadi.html

Hlavička / pätička, list groups a odkazy

Karty sú vo frameworku Bootstrap naozaj mocným pomocníkom. V ďalšej ukážke si predvedieme ako definovať hlavičku alebo pätičku karty, ako do nej vložiť list group a odkazy.

<div class="card" style="width: 20rem;">
    <h4 class="card-header">
        Jan Novák
    </h4>
    <ul class="list-group list-group-flush">
        <li class="list-group-item active">Události</li>
        <li class="list-group-item">Zprávy</li>
        <li class="list-group-item">Články</li>
        <li class="list-group-item disabled">Aukce</li>
    </ul>
    <div class="card-body">
        <a href="#" class="card-link">Odkaz 1</a>
        <a href="#" class="card-link">Odkaz 2</a>
    </div>
</div>

Hlavičku kariet definujeme pomocou elementu sa triedou .card-header. Namiesto elementu <h4> by sme mohli použiť aj element <div>. Takáto hlavička by potom mohla obsahovať ľubovoľný HTML obsah a bola by stále podfarbená sivo. List group priraďujeme triedu list-group-flush, ktorá spôsobí, že rohy okolo list group nebudú zaoblené. Odkazom dodávame triedu .card-link, ktorá odkazom dodá pravý okraj a môžeme ich ľahko skladať vedľa seba.

Výsledok v prehliadači:

Karty v Bootstrap
cards_dalsi_e­lementy.html

Obsahy samozrejme môžeme miešať so všetkým, čo sme si už ukázali vyššie (obrázky, nadpisy, ...). Pätičku by sme pridali obdobne a to pomocou elementu <div> na konci karty, ktorému by sme priradili triedu .card-footer.

Použitie Gridu

Karty môžeme vložiť do responzivního gridu. Keďže sa rozťahujú cez celý rodičovský element, budú sa krásne prispôsobovať a zalamovať presne ako si na gridu definujeme.

<div class="row">
    <div class="col-sm-6">
        <div class="card">
            <div class="card-body">
                <h4 class="card-title">Karta 1</h4>
                <p class="card-text">Karta vložená v responzivním gridu. Zkuste si zmenšit velikost okna a zalomí se.</p>
                <a href="#" class="btn btn-primary">Tlačítko</a>
            </div>
        </div>
    </div>
    <div class="col-sm-6">
        <div class="card">
            <div class="card-body">
                <h4 class="card-title">Karta 2</h4>
                <p class="card-text">Karta vložená v responzivním gridu. Zkuste si zmenšit velikost okna a zalomí se.</p>
                <a href="#" class="btn btn-primary">Tlačítko</a>
            </div>
        </div>
    </div>
</div>

výsledok:

Karty v Bootstrap
cards_grid.html

Podrobnosti o gridu sa dozvieme ďalej v kurze, potom sa sem môžete vrátiť a vyskúšať si ďalšie jeho funkcie s kartami vo vnútri.

Navigácia

Ďalšie nakouknutí bude k navigáciám, ku ktorým sa ešte len dostaneme. Komponenty Bootstrap sú medzi sebou rôzne previazané a preto je nemožné vysvetliť je v kurze postupne. To ale vôbec nevadí, pozrime sa ako sa do hlavičky karty vloží navigačná lišta a zvyšok si vysvetlíme neskôr.

<div class="card text-center">
    <div class="card-header">
        <ul class="nav nav-tabs card-header-tabs">
            <li class="nav-item">
                <a class="nav-link active" href="#">Aktivní</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Odkaz</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Neaktivní</a>
            </li>
        </ul>
    </div>
    <div class="card-body">
        <h4 class="card-title">Nadpis</h4>
        <p class="card-text">Obsah karty.</p>
    </div>
</div>

výsledok:

Karty v Bootstrap
cards_navigace.html

Pre alternatívne vzhľad, kde sú namiesto záložiek v lište tlačidlá, využijeme tried .nav-pills a .card-header-pills a triedy .nav-tabs a .card-header-tabs odoberieme.

výsledok:

Karty v Bootstrap
cards_navigace_pi­lls.html

Obrázkové pozadia

Vďaka podpore image Overlays môžeme kartám priradiť obrázkové pozadia. To však nevložíte ako obrázok na pozadí, ale ako element <img> sa triedou .card-img. Ďalší obsah karty bude cez obrázok zobrazený ako tzv. Overlay, prekrytie, pomocou triedy .card-img-overlay:

<div class="card text-white" style="text-shadow: black 0px 0px 5px;">
    <img class="card-img" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_les.jpeg" alt="Les">
    <div class="card-img-overlay" style="text-shadow: black 0px 0px 5px;">
        <h4 class="card-title">Odpočíváte také někdy?</h4>
        <p class="card-text">Víte, že do lesa si můžete zajít odpočinou od informačních technologií? :)</p>
    </div>
</div>

výsledok:

Karty v Bootstrap
cards_overlay.html

Farby môžeme používať aj u hlavičky a pätičky. Ak by sme chceli, aby bola hlavička alebo pätička priehľadná, použijeme triedu .bg-transparent.

Layouty

Okrem tvorby layoutov pomocou gridu pre nás Bootstrap pripravil aj tzv. Skupiny kariet (card groups). Tie sú na rozdiel od gridu nalepené tesne na seba. Asi je zbytočne podotýkať, že výsledok je plne responzívne. Ak zmenšíte okno prehliadača a karty sa vedľa seba nezmestia, začnú sa radiť nad seba.

<div class="card-group">
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_les.jpeg" alt="Les">
        <div class="card-body">
            <h4 class="card-title">Les</h4>
            <p class="card-text">Víte, že do lesa si můžete zajít odpočinou od informačních technologií? :) Dobrý je např. ten Klánovický hned u Prahy.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">21. září</small>
        </div>
    </div>
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_poust.jpeg" alt="Poušť">
        <div class="card-body">
            <h4 class="card-title">Poušť</h4>
            <p class="card-text">Tato karta je velmi krátká.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">12. listopadu</small>
        </div>
    </div>
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_jezero.jpeg" alt="Jezero">
        <div class="card-body">
            <h4 class="card-title">Jezero</h4>
            <p class="card-text">Jezera se často vyskytovala v poezii, pravděpodobně pro pocity plynoucí z klidné hladiny rozlehlé vodní plochy. Není náhodou, že jedno z nejznámějších českých jezer nese jméno Karla Hynka Máchy, autora známé básně Máj.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">6. února</small>
        </div>
    </div>
</div>

výsledok:

Karty v Bootstrap
cards_skupiny.html

Všimnite si, že pätičky sa zarovnali vedľa seba, aj keď je každá karta v skutočnosti inak vysoká. Čo viac si môže webdesigner priať? :)

Okrem triedy .card-group môžeme použiť aj .card-deck. Karty sú potom ďalej od seba.

Múru

Máte veľa kariet rôznych výšok, napr. Fotografií, a chceli by ste z nich poskladať stene ako vyzerajú napr. Na Google+? Táto fíčura je pravdepodobne jedna z najlepších v Bootstrap, posúďte sami.

Všetky karty obalíme elementom <div> sa triedou .card-columns. Potom už nie je k dosiahnutiu rozloženiu využívaný flex box, ale CSS columns. Položky sa radí zhora nadol a zľava doprava. Druhá položka je teda stále v prvom stĺpci a tak ďalej.

<div class="card-columns">
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_les.jpeg" alt="Les">
        <div class="card-body">
            <h4 class="card-title">Les</h4>
            <p class="card-text">Víte, že do lesa si můžete zajít odpočinou od informačních technologií? :) Dobrý je např. ten Klánovický hned u Prahy.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">21. září</small>
        </div>
    </div>
    <div class="card">
        <img class="card-img-top" src="https://www.dropbox.com/s/j81olx214b9wjoc/itnetwork_tshirt.jpg?dl=1" alt="Tričko ITnetwork">
        <div class="card-body">
            <h4 class="card-title">Tričko ITnetwork</h4>
            <p class="card-text">Programátorské tričko ze 100% bavlny pro všechny pravé geeky.</p>
            <a href="#" class="btn btn-primary">Do košíku</a>
        </div>
    </div>
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_poust.jpeg" alt="Poušť">
        <div class="card-body">
            <h4 class="card-title">Poušť</h4>
            <p class="card-text">Tato karta je velmi krátká.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">12. listopadu</small>
        </div>
    </div>
    <div class="card bg-danger text-white">
        <div class="card-body">
            Nikdy nevkládejte neošetřené proměnné přímo do SQL dotazů!
        </div>
    </div>
    <div class="card border-success">
        <div class="card-body text-success">
            <h4 class="card-title">Splacená částka</h4>
            Splaceno 100%
        </div>
    </div>
    <div class="card">
        <h4 class="card-header">
            Jan Novák
        </h4>
        <ul class="list-group list-group-flush">
            <li class="list-group-item active">Události</li>
            <li class="list-group-item">Zprávy</li>
            <li class="list-group-item">Články</li>
            <li class="list-group-item disabled">Aukce</li>
        </ul>
        <div class="card-body">
            <a href="#" class="card-link">Odkaz 1</a>
            <a href="#" class="card-link">Odkaz 2</a>
        </div>
    </div>
    <div class="card">
        <img class="card-img-top" src="https://www.itnetwork.cz/images/5/css/bootstrap/pozadi_jezero.jpeg" alt="Jezero">
        <div class="card-body">
            <h4 class="card-title">Jezero</h4>
            <p class="card-text">Jezera se často vyskytovala v poezii, pravděpodobně pro pocity plynoucí z klidné hladiny rozlehlé vodní plochy. Není náhodou, že jedno z nejznámějších českých jezer nese jméno Karla Hynka Máchy, autora známé básně Máj.</p>
        </div>
        <div class="card-footer">
            <small class="text-muted">6. února</small>
        </div>
    </div>
</div>

Výsledok v prehliadači:

Karty v Bootstrap
cards_zdi.html

V budúcej lekcii, Bootstrap - Carousel a Progress , nás čakajú komponenty carousel a progress.


 

Predchádzajúci článok
Riešené úlohy k 11.-12. lekciu Bootstrap CSS frameworku
Všetky články v sekcii
Kompletný kurz CSS frameworku Bootstrap
Preskočiť článok
(neodporúčame)
Bootstrap - Carousel a Progress
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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