CSS — ako stránka vyzerá

Povedať stránke, ako má vyzerať — jedno CSS pravidlo, farba, písmo, rámček a vycentrovanie.

Tento blok je 3.
Blok 3 z približne 20 v tomto školskom roku.

CSS pravidlo

Stránka, ktorú si minule založil, je čierna na bielom. Nie preto, že by si niečo pokazil — prehliadač len nemá odkiaľ vedieť, ako ju chceš mať. Kým mu to nepovieš, drží sa svojich predvolených hodnôt.

Povie sa mu to jazykom CSS. HTML hovorí, čo na stránke je. CSS hovorí, ako to vyzerá. Sú to dva samostatné jazyky a v jednom súbore vedľa seba.

Celé CSS stojí na jednom tvare, ktorý sa opakuje donekonečna:

h1 {
  color: red;
}

Má tri časti a každá má meno, ktoré budeme používať celý rok:

  • h1 je selektor — čoho sa pravidlo týka. Tu všetkých hlavných nadpisov na stránke.
  • color je vlastnosť — čo na nich meníš.
  • red je hodnota — na čo to nastavíš.

Za hodnotou je bodkočiarka. Keď ju vynecháš, prehliadač neohlási chybu — len ticho preskočí ten riadok aj ten nasledujúci. Toto je najčastejší dôvod, prečo sa „CSS nič nerobí”.

Nižšie je hotová stránka aj s pravidlami. Zmeň v nich hodnoty a pozeraj sa vpravo. Nič nepokazíš, tlačidlo Vrátiť pôvodné to vráti späť.

h1{color:red;}selektorvlastnosťhodnota
Každé jedno CSS pravidlo má presne tieto tri časti, nech je akokoľvek dlhé.
Píš sem

Takto to vyzerá
<h1>Moja stránka</h1>

<p>Prvý odsek. Skús mu vpravo zmeniť farbu alebo veľkosť.</p>

<p>Druhý odsek. Všimni si, že pravidlo pre p platí na oba naraz.</p>

<style>
h1 {
  color: red;
}

p {
  color: gray;
}
</style>

Kam sa CSS píše

Sú tri miesta a na prvý pohľad robia to isté. Nerobia.

KamAko to vyzeráKedy
Priamo do značky<h1 style="color: red">Takmer nikdy. Platí len na tú jednu značku a nedá sa to znovu použiť.
Do <style> v <head><style> h1 { color: red; } </style>Toto robíme dnes. Jeden súbor, pravidlá platia na celú stránku.
Do vlastného súboru styles.csspripojí sa značkou <link>Keď má stránka viac súborov. To príde neskôr.

Tú tretiu značku už poznáš — <link> bola v kvíze minulú hodinu ako tá, ktorá k stránke pripája súbor a sama na nej nie je vidieť. Presne toto je jej práca.

V editore na tejto stránke je <style> dole pod textom, aby si ho mal po ruke. Vo svojom index.html na GitHube ho daj do <head>, teda medzi <head> a </head> — patrí tam, lebo je to informácia o stránke, nie jej obsah:

<head>
  <meta charset="utf-8">
  <title>Názov tvojej stránky</title>

  <style>
    h1 {
      color: red;
    }
  </style>
</head>

Farba

Farby sú dve a pletú sa najčastejšie zo všetkého:

  • color je farba textu, teda samotných písmen.
  • background-color je farba plochy za nimi.

Keď ich nastavíš na body, platia na celú stránku — všetko vnútri ich zdedí, kým to niektoré neskoršie pravidlo neprepíše.

Hodnotu vieš napísať dvoma spôsobmi. Anglickým názvom (red, black, darkblue, whitesmoke) alebo kódom so #, kde sú tri dvojice pre červenú, zelenú a modrú — #ff6f1e je tá oranžová z minulej hodiny. Názvov je asi stopäťdesiat, kódom vieš namiešať čokoľvek.

Sprav v editore dve veci: daj celej stránke inú farbu plochy a odsekom inú farbu textu.

AhojAhojcolorbackground-colorpísmenáplocha za nimi
Tá istá hodnota, dve rôzne vlastnosti — a úplne iný výsledok.
Píš sem

Takto to vyzerá
<h1>Moja stránka</h1>

<p>Prvý odsek.</p>

<p>Druhý odsek.</p>

<style>
body {

}

p {

}
</style>

Skontroluj si:

  • ☐ Plocha stránky — pozadie je stále biele. Mení ho body { background-color: …; }.
  • ☐ Farba odsekov — text je stále čierny. Mení ho p { color: …; }.

Písmo a jeho veľkosť

Dve vlastnosti, ktoré spravia najväčší rozdiel za najmenej práce. Obe daj na body, nech platia na celú stránku.

body {
  font-family: Arial, sans-serif;
  font-size: 18px;
}

font-family je názov písma. Píše sa doň viac možností oddelených čiarkou: prehliadač skúsi prvú, a ak ju na tom počítači nenájde, ide na ďalšiu. Posledná je vždy všeobecná skupina — sans-serif (bezpätkové, ako Arial) alebo serif (pätkové, ako Times). Bez nej ti na cudzom počítači môže vyjsť hocičo.

font-size je veľkosť v pixeloch. Predvolená je 16px. Na čítanie dlhšieho textu je 18px až 20px príjemnejšie — vyskúšaj si to na vlastnej stránke a rozhodni sa sám.

Trieda, id a <div>

Pravidlo p { color: gray; } trafí všetky odseky na stránke. To je zvyčajne to, čo chceš. Občas ale chceš osloviť jednu jedinú vec — ten rámček s kontaktom, tú jednu kartu.

Trieda — meno, ktoré sa smie opakovať

Na to si značke vymyslíš meno cez atribút class:

<div class="karta">
  <p>Kontakt</p>
  <p>meno@skola.sk</p>
</div>

A v CSS sa naň odkážeš s bodkou na začiatku:

.karta {
  color: darkblue;
}

Bodka je celý rozdiel. karta bez bodky by znamenalo značku <karta>, ktorá neexistuje, a pravidlo by sa ticho nepoužilo. V HTML bez bodky, v CSS s bodkou.

Id — meno pre jednu jedinú vec

Druhý spôsob, ako si značku pomenovať, je atribút id. Robí to isté, len sa v CSS píše s mriežkou namiesto bodky:

<div id="kontakt">
  <p>meno@skola.sk</p>
</div>
#kontakt {
  border: 1px solid black;
}

Rozdiel je v jednom pravidle: to isté id smie byť na stránke len raz. Trieda sa opakovať môže, koľkokrát chceš — a práve preto sa používa oveľa častejšie.

TriedaId
V HTMLclass="karta"id="kontakt"
V CSS.karta — bodka#kontakt — mriežka
Koľkokrát na stránkekoľkokrát trebalen raz
Jedna značka ich môže maťaj niekoľko narazlen jedno

Ktoré kedy

Pravidlo, ktoré ti vydrží celý rok: na vzhľad používaj triedu. Aj vtedy, keď je tá vec na stránke zatiaľ jediná — o dva týždne pribudne druhá a s triedou nemusíš prepisovať nič.

Id si nechaj na to, na čo je naozaj dobré: pomenovať jedno konkrétne miesto, na ktoré sa dá odkázať. Odkaz, ktorý skočí na časť tej istej stránky, sa píše s mriežkou:

<a href="#kontakt">Kontakt</a>

<div id="kontakt">
  <p>meno@skola.sk</p>
</div>

Klikneš naň a stránka sa posunie dole na ten <div>. Nenačíta sa nič nové — preto to na dlhej stránke funguje okamžite. Presne takto je urobený zoznam V tejto hodine úplne hore na tejto stránke.

Neskôr, pri JavaScripte, bude id aj spôsob, ako jednu konkrétnu vec na stránke nájsť a zmeniť. Zatiaľ ti stačí vedieť, že existuje a v čom sa líši.

Načo to celé bolo s <div>

A tu konečne dostáva zmysel <div>, ktorý si minule pridal a nič nespravil. Sám osebe naozaj nič nerobí — je to obal. Ale keď mu dáš triedu, máš zrazu jednu vec, ktorú vieš osloviť a nastaviť jej, ako má vyzerať. To je celý jeho zmysel.

Daj v editore triede karta inú farbu textu — a všimni si, že prvý odsek nad ňou ostane taký, aký bol.

Píš sem

Takto to vyzerá
<h1>Moja stránka</h1>

<p>Tento odsek je mimo karty a nemá sa zmeniť.</p>

<div class="karta">
<p>Kontakt</p>
<p>meno@skola.sk</p>
</div>

<style>

</style>

Skontroluj si:

  • ☐ Karta — text v karte je stále čierny. Pravidlo sa píše .karta { color: …; }, s bodkou na začiatku.
  • ☐ Odsek nad kartou — ten má ostať čierny. Ak sa prefarbil aj on, dal si pravidlo na p namiesto na .karta.

Rámček, odsadenie a okraj

Tri vlastnosti, ktoré z karty spravia kartu. Vyskúšaš si ich hneď v ďalšej časti, najprv ich treba vedieť rozoznať:

.karta {
  border: 1px solid black;
  padding: 12px;
  margin: 20px;
}

border je rámček. Má tri hodnoty za sebou: hrúbku, druh čiary (solid je plná, dashed prerušovaná) a farbu.

padding je odsadenie — priestor vnútri rámčeka, medzi čiarou a textom. Keď text lipne na rámčeku, chýba práve toto.

margin je okraj — priestor zvonku, medzi rámčekom a tým, čo je vedľa neho.

Pomôcka, ktorá stačí na celý rok: odsadenie je vnútri, okraj je zvonku. Keby si ich pomýlil, uvidíš to okamžite — text sa buď prilepí na čiaru, alebo sa rámček prilepí na susedov.

margin — okrajborder — rámčekpadding — odsadenieobsah
Odsadenie je vnútri rámčeka, okraj zvonku. Toto je celý rozdiel.

Vycentrovanie

Sú dve vycentrovania a robia dve rôzne veci:

  • text-align: center posunie doprostred text vnútri prvku. Samotný rámček ostane, kde bol.
  • margin: 0 auto posunie doprostred samotný prvok. Hodnota auto znamená „prehliadač, rozdeľ voľné miesto po oboch stranách rovnako”.

A tu je háčik, ktorý stojí každého aspoň desať minút: auto nemá čo rozdeliť, kým prvok nemá šírku. <div> je predvolene široký cez celú stránku, takže voľné miesto okolo neho je nulové a nič sa nepohne. Daj mu najprv width a potom auto.

Karta v editore už rámček aj odsadenie má. Dostaň ju do stredu stránky.

texttexttext-align: centermargin: 0 autoposunul sa text vnútriposunul sa celý rámček
Vpravo je rámček užší — bez width by sa nemal kam posunúť.
Píš sem

Takto to vyzerá
<h1>Moja stránka</h1>

<div class="karta">
<p>Kontakt</p>
<p>meno@skola.sk</p>
</div>

<style>
.karta {
  border: 1px solid black;
  padding: 12px;
}
</style>

Skontroluj si:

  • ☐ Stred — karta je stále vľavo. Najprv jej daj šírku, napríklad width: 260px; — bez nej je široká cez celú stránku a nie je čo centrovať. Potom to dokončí margin: 0 auto;.

Úloha: vyfarbi svoju stránku

Vraciaš sa k tej istej stránke, ktorú si si minule založil — repozitár tiu-stranka, súbor index.html. Nezakladaj nový.

Celé to ide cez web GitHubu, nič sa neinštaluje:

  1. Otvor svoj repozitár a klikni na index.html.
  2. Vpravo hore ceruzka Edit this file.
  3. Doplň do <head> značku <style> a do nej svoje pravidlá.
  4. Úplne dole zelené Commit changes.

Termín: polnoc pred ďalšou hodinou. Za úlohu je 0 / 0,5 / 1 bod.

Čo na stránke musí byť

  • <style> je v <head>, nie v <body>
  • stránka má inú farbu plochy ako bielu — body { background-color: … }
  • nadpis <h1> má inú farbu ako text okolo neho
  • je nastavené písmo a jeho veľkosť — font-family a font-size na body
  • na stránke je <div> s vlastnou triedou
  • ten <div> má rámček a odsadenie
  • a je vycentrovaný

Nemusí to byť pekné. Musí to byť tvoje a musíš vedieť ukázať, kde sa čo mení — to je presne prvá otázka pri obhajobe na konci roka.

Nabudúce

Tvoja stránka už vie, ako má vyzerať. Zatiaľ ju ale vidíš len ty — ako kód na GitHube.

Nabudúce dostane vlastnú adresu na internete, ktorú otvorí ktokoľvek, a každý svoju stránku ukáže ostatným.

Pojmy z tejto hodiny

CSS pravidlo
Zápis ako h1 { color: …; } v časti <style> — hovorí, ako má vyzerať to, čo HTML iba pomenovalo. Jedno pravidlo vie zmeniť vzhľad desiatkam značiek naraz.
Selektor
Prvá časť CSS pravidla — hovorí, ktorých značiek sa pravidlo týka. Selektor p trafí všetky odseky na stránke, selektor .ramcek len tie značky, ktoré majú triedu ramcek.
Vlastnosť
To, čo na prvku meníš — color, font-size, border. Píše sa vnútri zložených zátvoriek pred dvojbodku a nikdy nestojí sama, vždy k nej patrí hodnota.
Hodnota
To, na čo vlastnosť nastavíš — red, 24px, 1px solid black. Stojí za dvojbodkou a riadok sa ukončí bodkočiarkou.
Trieda
Meno, ktoré si značke vymyslíš sám cez atribút class, aby si ju vedel v CSS osloviť. V HTML sa píše class="ramcek", v CSS sa na ňu odkážeš bodkou: .ramcek.
Id
Meno pre jednu jedinú značku, zapísané atribútom id — v CSS sa naň odkážeš mriežkou: #kontakt. To isté id smie byť na stránke len raz, preto sa na vzhľad používa trieda a id sa nechá na miesta, na ktoré sa odkazuje.
Odsadenie
Vlastnosť padding — priestor medzi rámčekom prvku a jeho obsahom, teda vnútri. Keď text lipne na rámčeku, chýba práve odsadenie.
Okraj
Vlastnosť margin — priestor okolo prvku, teda medzi ním a tým, čo je vedľa neho. Odsadenie je vnútri rámčeka, okraj zvonku.
Vycentrovanie
Umiestnenie prvku doprostred svojho rodiča — najčastejšie margin: 0 auto pri prvku so šírkou, alebo text-align: center pri jeho rodičovi. Ktorý spôsob použiješ, závisí od toho, čo presne centruješ.

Celý slovník →

Skús si

Štyri otázky na to isté, čo si práve robil. Bez známky. Nič sa neukladá.

1.V pravidle p { color: blue; } — ktorá časť je selektor?
2.Čo zmení vlastnosť color?
3.Napísal si .karta { margin: 0 auto; }, ale rámček sa nevycentroval. Prečo?
4.Na stránke máš tri karty, ktoré majú vyzerať rovnako. Dáš im class alebo id?

Kľúč: 1a 2b 3b 4a