Autor Zpráva
nulovamezera
Profil
Ahoj.
Na mojí stránce mám flexbox. Flexbox se wrapuje a má justify-content: space-around;. To má za následek, že se horizontálně vytvoří mezi divy mezera. To tak chci. Jenže ta samá mezera se nevytvoří vertikálně. Dal jsem tam těm divům margin, ale furt je to nerovnoměrný. Dá se nastavit, aby byla vertikální mezera stejná, jako horizontální? Asi by se to dalo počítat JavaScriptem, ale nebylo by to tak pěkný. Jak to udělám CSSkem?


Ještě obrázek.
Kcko
Profil
nulovamezera:
Použij grid, tam to řeší vlastnost GAP.
nulovamezera
Profil
Děkuju, ale já bych rád, aby si to spočítalo ty mezery podle justify-content. Možná bych to mohl nějak složitě vypočítat pomocí calc() nebo JS, ale nevím jak, aby to bylo nějak rozumně jednoduchý.
N71
Profil *
To celkem nedává smysl, v každém řádku můžou být mezery jinak široké. Podle které hodnoty by se pak měl flex řídit?
Grid je vhodnější – už z toho titulu, že tvoje struktura je dvourozměrná.
nulovamezera
Profil
N71:
v každém řádku můžou být mezery jinak široké. Podle které hodnoty by se pak měl flex řídit?
To je pravda... No v mém případě jsou všechny objekty stejně široké, akorát poslední řádek by mohl být jiný.

Grid je vhodnější
No dobře, jak udělám, abych tam měl tu vlastnost, jako s justify-content: space-around;?
nulovamezera
Profil
No a teď tam mám další problém - je tam kód:
<a href="/zaci/kuba.php">
  <h3>Kuba</h3>
  <img src="/zaci/obr/kuba.jpg">
</a>
Ale pod IMG se mi zobrazuje volné místo. I když odstraním h3 a zbyde mi tam jenom:
<a href="/zaci/kuba.php"><img src="/zaci/obr/kuba.jpg"></a>
Zato když odstraním celé obalení odkazem, nic tam pod tím není. Jak se toho volného místa zbavím?
Kcko
Profil
Mimo: Časem to půjde i ve flexboxu: css-tricks.com/safari-14-1-adds-support-for-flexbox-gaps

PS. nulovamezera
pokud chceš něco řešit, připrav živou ukázku. Tím myslím třeba sem Živá ukázka
nulovamezera
Profil
Kcko:
připrav živou ukázku
Posílal jsem odkaz, asi jsem ho moc dobře zamaskoval...
Kcko
Profil
nulovamezera:
Přidej obrázku:

display: block;
nulovamezera
Profil
Ono to funguje! Děkuju. Teď akorát: proč?
Kcko
Profil
Btw když si upravíš ten grid takto:

#zaci {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-gap: 40px;
}

Tak budeš mít cca to co si chtěl, samozřejmě zbav se veškerých marginů ...


Případně můžeš použít: css-tricks.com/auto-sizing-columns-css-grid-auto-fill-vs-auto-fit
nulovamezera
Profil
Btw když si upravíš ten grid takto:
No jenže ono to bude chtít zachovat všech 5 sloupečků. Na PC to bude moc široké, na mobilu to přeteče. Proto jsem to chtěl řešit tím flexem, kdy se mi ten počet přizpůsobí.


Ovšem ten auto fit zní užitečně.
Kcko
Profil
nulovamezera:
Existují breakpointy ( CSS pravidlo @media)), prostě si pro konkrétní rozlišení určíš jiný počet sloupečků ne?

Mobil => 1
Malý tablet => 2
Velký tablet => 3
Desktop nižší => 4
Velký => 5

Případně použiješ auto-fit s kombinací minimální rozměru a jednotky frakce (FR).
nulovamezera
Profil
Ach jo, to je na mě moc složitý :)
Nebo není, ale jsem líný dělat tolik práce jenom kvůli tomu, že tam budu mít úplně přesnou mezeru.
Každopádně za pomoc s obrázkem děkuju.
Kcko
Profil
nulovamezera:
Složité to fakt není, neutíkej od toho, když se musíš naučit něco nového. Od toho tvorba webu / programování / kódování etc prostě je.
Člověk se pořád učí něco nového, objevuje nové postupy, techniky, nové technologie ...

// mobil
grid-template-columns: 1fr;


// maly tablet
@media (min-width: 500px) {
  grid-template-columns: repeat(2, 1fr);
}

// vetsi tablet

@media (min-width: 767px) {
  grid-template-columns: repeat(3, 1fr);
}


// desktop
@media (min-width: 1200px) {
  grid-template-columns: repeat(5, 1fr);
}
nulovamezera
Profil
Mě se tadyta poloresponsivita moc nelíbí.


Co je vůbec to fr?
Kcko
Profil
nulovamezera:
Tohle je naprosto normální postup.
A pokud se Ti to nelíbí, tak to uděláš jak jsem psal výše přes auto-fill/auto-fit.

A fr jednotka je jednotka frakce.

Fr is a fractional unit and 1fr is for 1 part of the available space. The following are a few examples of the fr unit at work. The grid items in these examples are placed onto the grid with grid areas. The 4 columns each take up the same amount of space.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0