Autor Zpráva
H13
Profil
Ahoj, potřeboval bych poradit, mám určitá data, která jsou rozdělená do skupin, tyto skupiny vypisuji na stránku pomocí php z databáze:

liché skupiny (1,2,3,...) mám na pravo, sudé skupiny (0,2,4,...) mám na levo. Pomocí CSS a boxů se mi tedy skupiny rozdělují na levou stranu:

float:left;
clear:left;

a na pravou stranu:

float:right;
clear:right;

Rozdělení probíhá v pořádku, jenže ve FF a Opeře (v IE ne)mi vznikají velké mezery mezi skupinami (skupiny mají různý počet řádků). Zatímco IE prostě háže všechny 'levé' skupiny pod sebe a 'pravé' taktéž, u FF a Opery jsou sice skupiny na správném místě ale jako kdyby fungovalo špatně clear - např. Druhá levá skupina se zařadí ihned pod první levou skupinu, ale třetí levá skupiny se zařadí do stejné výšky jako pravá skupina:

tady je obrázek: http://www.web1234.wz.cz/

díky
Plaváček
Profil
H13

Možná jsem to moc nepochopil, ale mělo by postačit

liché skupině float: left;

a sudé skupině float: right; clear:left;
H13
Profil
No to je ještě horší. Jak to vysvětlit? Když použiju to co navrhuješ, bude pravidlem, že levý box bude začínat vždy ve stejné výšce, kde končí pravý box.

Zkusím ještě jednou. Je skupina boxů, který jsou buď vlevo nebo vpravo (to funguje). Nyní budu mluvit pouze o souřadnici Y. Potřebuji aby druhý levý box následoval první levý box, jenže se stává, že druhý (třetí, čtvrtý,... - není žádný pravidlo) někdy začíná v místě (pořád mluvím o Y) kde končí pravý box (vedlejší box) a ne v místě, kde skončil levý box - to znamená, že někdy vznikne mezera (Y mezera mezi boxy) a někdy ne (boxy jsou hned pod sebou)

V IE vše funguje správně, Příklad - v závorce budu udávat Y pozice: (začátek, konec)

LEVY-PRVNI-BOX (0,100) - PRAVY-PRVNI-BOX(0,50)
LEVY-DRUHY-BOX(100,200) - PRAVY-DRUHY-BOX(50,400) --> vše OK
LEVY-TRETI-BOX(400-500) - PRAVY-TRETI-BOX(400,600) --> a tady je právě chyba, LEVY-TRETI-BOX má začínat na 200, ale ve FF(Opeře) začně někdy na 400 - podle pravýho boxu
Plaváček
Profil
H13

Tak se ale chovají plovoucí prvky. Každý další začíná tam, kde končí předchozí a kde je první volné místo. Jedinou možnost, kterou vidím jako snadno realizovatelnou je rozhodit stránku do dvou sloupců:

<div id="lichy">tady budou liché boxy</div>
<div id="sudy">tady budou sudé boxy</div>

#lichy, #sudy {
width:50%;
float: left;
}
#sudy{
float:rigtht;
}

A je to. Jinak to ani udělat nepůjde. Doporučuji k prostudování tento článek, protože problematika plovoucích prvků není tak jednoduchá, jak vypadá na první pohled.

http://www.pixy.cz/pixylophone/2003_12_archiv.html#1071056082
H13
Profil
Každý další začíná tam, kde končí předchozí a kde je první volné místo

Ano, levý blok se ale takto nechová - má se vložit ihned pod předchozí levý blok, kde je místo a kde podle pravidel patří (clear:left) - chová se jako tabulka (začátek na stejném místě jako pravý blok) a ne jako float ??? Navíc dva ze tří bloků se chovají správně a jeden ne, přitom v IE vše funguje.

Jinými slovy, prvek s clear:left se zobrazí až pod všemi předchozími levostrannými plaváčky — prvek s clear:right si počká až na konec těch pravostranných

Jestli to dobře chápu, pak by neměla být souvislost mezi "float:left" a "float:right" v případě kdy mají bloky dostatek místa.

Podívejte se prosím na:

http://www.web1234.wz.cz/zk.html

v prohlížeči IE a poté v prohlížeči FF, nerozumím nelogické mezeře vpravo při zobrazení ve FF
habendorf
Profil
nerozumím nelogické mezeře vpravo při zobrazení ve FF

To je přece jasný. Druhý (a každý další) blok vlevo clearuje, takže druhý pravý blok začíná až na jeho úrovni. Ostatně můžeš se přesvědčit sám - pokud přidáš obsah do prvního levého bloku, druhý pravý se odsazuje víc. Je to od FF jediné správné chování (ostatně chová se tak i Opera).

Jen mi není jasné, proč to děláš tímto způsobem. Proč neuděláš normálně dva floatované sloupce?
H13
Profil
Jen mi není jasné, proč to děláš tímto způsobem. Proč neuděláš normálně dva floatované sloupce?

Mě je to v podstatě jedno jak to udělat, důležitej je pro mě výsledek, prostě potřebuju dva sloupce a nějak mi to nejde, myslel jsem, že clear:left nemá vliv na pravej blok.

Neznám předem počet skupin a proto pomocí skriptu je rozděluji na levé (float:left) a pravé(float:right). Když budou všechny (float:left), dva sloupce také vzniknou, ale mezery nezmizí a já potřebuju jen aby tam nebyly mezery (Y)

http://www.web1234.wz.cz/zk2.html
H13
Profil
Tak jsem to vyřešil dvouma velkýma blokama, oba dva float:left a do nich se vkládají skupiny, musel jsem překopat php kód a výstup z databáze, ale funguje to

díky moc za rady
Toto téma je uzamčeno. Odpověď nelze zaslat.

0