Zůstaň doma a naprogramuj si hru 8

Poslední dny jsme hodně programovali a ani o víkendu jsme neodpočívali. Za odměnu dnes trochu zvolníme a dáme si pro změnu trochu HTML a CSS. Jsme ve fázi, kdy si do hry začneme přidávat předměty, které budeme sbírat a s tím se pojí i časomíra. Trocha soutěživosti není nikdy na škodu.

Začneme se HTML, kam přidáme hlavičku, hned za tag <body>:

<header>
        <div>
            <img src="images/score.png" alt="score">
            <span id="score">0/6</span>
        </div>

        <div id="time">
            00:00
        </div>
</header>

Tag <header> (hlavička) pochází z nejnovější verze HTML5. Společně s dalšími novými tagy jako <main>, <article>, <section> apod. se starají o lepší strukturu HTML dokumentů. To pomáhá vyhledávačům zaměřit se na to nejdůležitější na stránce. Samotný tag <header> nám graficky nijak obsah stránky neovlivňuje.

Uvnitř hlavičky pak vidíme 2 menší sekce, první v sobě má obrázek (tag <img>) a skóre (tag <span>). Druhá část pak zobrazuje časomíru.

Tělo stránky by po našich úpravách mělo vypadat zhruba takto:

<body>
    <header>
        <div>
            <img src="images/score.png" alt="score">
            <span id="score">0/6</span>
        </div>

        <div id="time">
            00:00
        </div>
    </header>

    <div id="game">
        <canvas id="canvas"></canvas>
    </div>

    <!--propojení s JavaScriptem-->
    <script src="script.js"></script>
</body>

Uděláme ještě jednu malou úpravu v tagu <head>, přidáme si do jiný font písma. Na této stránce najdete databázi různých fontů. Jakýkoliv font si můžete naimportovat na svojí stránku. My použijeme font Bitter. Přidejme si do <head> tento řádek kódu:

<link href="https://fonts.googleapis.com/css?family=Bitter:400,700&display=swap&subset=latin-ext" rel="stylesheet">

V HTML jsme hotovi a teď CSS. Abychom hlavičku hezky uspořádali, využijeme techniku, které se říká flexbox.

Nejjednodušší moderní způsob, jak dát prvky na webové stránce vedle sebe, je tzv. flexbox. Pokud rodičovskému prvku (v našem případě <header>) nastavíme vlastnost display: flex;, uděláme z něj flexbox. Flexbox všechny své potomky (do něj vnořené prvky, tedy ty naše 2 části zmíněné výše) umístí do jednoho řádku vedle sebe.

Pomocí vlastnosti justify-content: space-between; řekneme flexboxu, že má své potomky rozmístit od kraje do kraje, s pravidelnými rozestupy mezi nimi. To se nám hodí, protože tím pádem dostaneme počítadlo předmětů vlevo a počítadlo času vpravo.

Použijeme ještě vlastnost align-items: center;, která v rámci flexboxu vycentruje položky k sobě navzájem ve svislém směru.

Do souboru style.css na konec dopíšeme:

header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

Tak to už vypadá o dost lépe, ale hlavičku máme širokou přes celou stránku. Pojďme ji udělat stejně širokou, jako je herní plocha (nastavením width) a udělejme nad hlavičkou a pod hlavičkou mezeru a zařiďme vycentrování hlavičky na stránce (oboje pomocí margin). Upravme CSS pro hlavičku následovně:

header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 600px;
    margin: 20px auto 10px auto;
}

Když se nyní na hru podíváme, tak vypadá pěkně. Bylo by super vložit trochu větší mezeru mezi obrázek a hodnotu, to uděláme přidáním marginu k jednotlivým obrázkům v našem header:

header img {
    margin-right: 10px;
}

Trošku poladíme velikost fontu u skóre a času změnou vlastnosti font-size:

#score, #time {
    font-size: 20px;
}

A nakonec v body upravíme font (font-family) a jeho tloušťku (font-weight), aby se to lépe četlo:

body {
    /*Změna pozadí celé stránky*/
    background-image: url("images/outside.png");

    font-family: 'Bitter', serif;
    font-weight: 700;
}

Na závěr

Trocha HTML a CSS a naše stránka je zase o něco pokročilejší. Zítra si do hry přidáme předměty. Kód z dnešního dne najdeš zde. :)

Další den

Předcházející den