IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Grid-mřížkované rozvržení

V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jan Jedlička:23.1.2018 19:27

Ahoj lidi,
mohl by mi někdo poradit ohledně rozvržení v css (gridu)?¨
Mám vytvořený div class=container a v něm vnořený div class=obal a v něm zase položky, tak při určení rozměru řádku nemohu používat % ? Píší to asi nesrozumitelně, jde mi totiž o toto:

.container {width: 800px; height: 600px;
margin-left: auto; margin-right: auto;}

.obal {display:grid;

grid-template-columns: 20% 20% 60%;
grid-template-rows: 100px 231px ;
}

.jedna {border: 1px solid black;
grid-column-start: 1;
grid-row-start: 1;
background-color: red;}

.druhy {
grid-column-start: 2;
grid-row-start: 1;
background-color: yellow}

.tri {
grid-column-start: 3;
grid-row-start: 1;
background-color: green;}

atd......

Když použiji % pro zadání rozměru sloupců tak to jde, ale při zadání rozměru pro řádky mi % nefungují.
Učím se totiž jako samouk pomocí knížky a zároveň si to zkouším.

děkuji za jakoukoliv radu

 
Odpovědět
23.1.2018 19:27
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Jan Jedlička
Honza Bittner:23.1.2018 20:14

Jdeš na to totiž špatně. Nejdříve ti zkusím vysvětlit % vs fr.

Takto nějak to máš teď a jak můžeš vidět, pokud přidáš mezery (gap), tak se to rozsype a máš obsah mimo. Proto není vhodný používat procenta, ale raději používat jednotku fr, což je jednotka, která vezme zbylé volné místo a rozseká ho na tolik dílků, kolik je součet všech fr, tj. to dělá takové poměry, které můžeš znát z flexboxu u flex-grow atp.

https://jsfiddle.net/Lnrchsr7

Takže všechny procenta nahradíme fr. Samozřejmě můžeš procenta používat, pokud to tvůj speciální případ vyžaduje, ale toto použití (při dopočítávání se celku) je kinda špatné.

https://jsfiddle.net/Lnrchsr7/1/

Teď, jak jistě vidíš, černě je označený .container, červeně .obal (tvůj grid). To znamená, že pokud použiješ procenta na výšku, nemáš prakticky možnost z čeho vybírat, a výšku určí obsah položek, protože prostě ten grid nemá výšku. To můžeš napravit nastavením výšky.

https://jsfiddle.net/Lnrchsr7/2/

Pokud chceš pak používat %, určitě můžeš, ale stejný problém jako u sloupečků. Teď třeba můžeme udělat 20 % pro první řádek, a druhý ať se vyplní do zbytku.

https://jsfiddle.net/Lnrchsr7/4/

ALE, teď si můžeš všimnout, že když jsem přidal další prvky na konec, tak tam jsou prvky, které mají minimální výšku, prostě aby se vešly, a zbytek se rozdělí tak, jak jsme uvedli. Toto je rozdíl mezi explicitním a implicitním gridem. První 2 řádky jsou součástí explicitního gridu, zbytek součástí implicitního gridu.

No a pokud chceš upravit tyto prvky co "přetekly" do implicitní části, používáš na ně pravidla s -auto- namísto -template-, tj. např. grid-auto-rows. Tj. pro tento příklad: 1. 20 %, 2. 2 fr a zbytek 1fr.

https://jsfiddle.net/Lnrchsr7/5/

S CSS gridem se dá dělat hodně moc srandiček a je to opravdu téměř perfektní nástroj, zejména ve spojením s Flexboxem. (a ne, CSS Grid není náhrada za Flexbox, ani naopak; jsou věci, které uděláš v obojím, jsou věci, které uděláš jen v jednom z nich; a jsou i věci, které neuděláš ani v jednom) :-)

Zrovna v pátek budu mít přednášku na téma CSS gridů (a CSS proměnných), viz https://www.itnetwork.cz/…k/detail/153

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
23.1.2018 20:14
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovídá na Honza Bittner
Jan Jedlička:23.1.2018 20:55

diky za rychlou odpověď. takže jestli to chápu, je lepší tedy v případě gridu používat spíše jednotky fr ? jestě můžu poprosit o trošku bližší rozdíl mezi explicitní a implicitní? nebo je možné to tady najít na serveru? v knížce toho totiž moc nemám a rád bych tomu porozuměl. rád bych v pátek přišel na přednášku, ale jsem nemocný :-( . asi náhodou nebude nějaké video z přednášky? ještě bych tě chtěl poprosit o radu, je nějaký dobrý studijní materiál pro výuku CSS3?

 
Nahoru Odpovědět
23.1.2018 20:55
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Jan Jedlička
Honza Bittner:23.1.2018 21:05

No, explicitní část je ta, kterou ty sám ručně napíšeš – že máš 3 sloupečky a 2 řádky. Pro tuto část stanovíš rozměry atp.

Implicitní část je ta, která "jakoby přetekla" to, co jsi nastavil. Když řekneš, že máš 3 sloupečky a 2 řádky a najednou máš prvky, které jsou na 3., 4., ... řádku, jsou v implicitní části. A i jen ty můžeš nastavovat pomocí toho -auto- namísto -template-.

Přikládám obrázek, červěně je označena explicitní část a šipka míří na konec explicitních řádků gridu. (zvýrazněná lajna). Zeleně je označena implicitní část (to, co se vytvoří mimo to, co nastavíš). Tyto lajny jsou z Firefoxu, který má tyto super možnosti v devtools (F12, rozložení), kde např. oproti tomu Chrome nemá až tak hezké debugovací nástroje pro grid, doufám že jen prozatím.

No, určitě se podívej např. na https://cssgrid.io, kde je celý seriál videí o css gridu, opravdu dobrých videí (v AJ). Je to zadarmo, takže žádné výdaje. Případně, pokud máš raději čtený text, tak mohu doporučit https://css-tricks.com/…-guide-grid/. :-)

Nahoru Odpovědět
23.1.2018 21:05
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.