CSS-Tricks - web/blog s perfektním vysvětlením spousty věcí v CSS Vzhůru dolů- kodérský český blog hlavně o CSS a správných postupech Flexbox Froggy - hra na naučení se Flexboxu CSS Grid Garden - hra na naučení se CSS Grid Material Design - Google open-source design guidelines
Full name: Cascading Style Sheets HTML definuje strukturu dokumentu, CSS definují grafickou reprezentaci Je tento způsob stylování podporován dostatečným počtem prohlížečů? → https://caniuse.com/
- zajišťují dopřednou i zpětnou kompatibilitu
- dopředná kompatibilita funguje tak, že pokud prohlížeč nepodporuje nějakou vlastnost, tak mi to nerozbije styly (tím způsobem, že to nezahlásí chybu a nezahodí to zbytek CSSka)
Není potřeba všechny styly psát do jednoho souboru, ale můžu do více souborů a pospojovat je @import
Integrace do HTML
- nalinkování do hlavičky
<link rel="stylesheet" type="text/css" href="styles/default.css">
- nalinkování přes
@import
<style type="text/css">
@import url("http://web.cz/styles/default.css");
</style>
- styly přímo v hlavičce (v tagu
<style>
) - inline styly
- hodí se při optimalizaci, rychlém načítání a vysoké prioritě, ale duplikuji a mám je roztroušené po celém dokumentu + při změně stylů musím editovat HTML
Hodnoty
- Délky: pointy (pt) a pica (pc) se využívají ve velikostech fontů.
em
se vztahuje k písmenu M - je relativní k rodičirem
- je relativní k rootuex
se vztahuje k písmenu Xvh a vw
- relativní k výšce a šířce zařízení
Ideální je vůbec nepoužívat px. Stačí mi jenom relativní jednotky. Absolutní slouží k tisku např. abych to mohl napozicovat správně. Můžu mít také speciální CSSka pro projektor (kde mám taky fixní šířku a výšku).
Elementy nedědí relativní hodnoty, ale hodnoty již vypočtené.
Písmo
sans
patkové písmo
sans-serif
bezpatkové písmo
Selektory
- specificita selectorů: MDN
- když budu chytře využívat specificitu, tak nemusím pak tolik používat
!important
- když budu chytře využívat specificitu, tak nemusím pak tolik používat
- Chytrý cheatsheet zde - skrz cvičení se můžu tak potrénovat, co všechno se vlastně selectne
:lang(cs)
se bere z HTML<html lang="cs">
div > p
→ vyber všechny p elementy, které mají div jako přímého rodiče- vedle selektoru následníka
E + F
(= adjacent sibling selector) existuje ještě general sibling selectorE ~ F
, který vybere všechny elementy F, které jsou na stejné úrovni jako E- zatímco s
+
to vybere pouze jeden element F, které následuje za E (a mají pořád stejného rodiče a jsou na stejné úrovni)
- zatímco s
- lze psát také
p:nth-child(2n+1)
nebop:nth-child(odd|even)
→ MDN here - existuje i
p::first-line
Nepsat text capslockem (velkými písmeny) do HTML, spíš to pak upravit v CSSku (text-transform: lowercase/uppercase
).
Dědičnost
- hodnota stylu je buď původní, zděděná (z rodiče), jako výsledek z pravidel
- styly může definovat: autor, uživatel stránky (např. v dev-tools, přepnutím do darkmode), prohlížeč (User-Agent)
Kaskáda - určení pravidla
- najdi všechny deklarace, které se vztahují k danému elementu
- seřaď je podle důležitosti
- UA < user < author < author !important < user !important
- uživatelé si mohou definovat svoje styly pro prohlížení svých stránek (není to tak běžné, ale dělá se to pro přístupnost a osobní preference)
- UA < user < author < author !important < user !important
- v případě rovnosti, seřaď podle specificity selektoru
- v případě další rovnosti, seřaď podle pořadí ve kterém byly specifikovány
Specificita Selektorů
- v “binárním” čísle - čím vyšší číslo, tím vyšší specificita
CSS 3
- přidává media queries
- nové selectory (
:is()
,:not()
,:where()
) - nové animace, transformace
- flexbox, grid apod.
Frameworky
- obecné (Bootstrap, Bulma, Foundation)
- utility (Tailwind, Materialize)
- lightweight (Pure, Miligram, Skeleton)
- další specializované
- Class-less framework přístup