Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 21. 2. 2007, 15:26:31
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 |
#2 · Zasláno: 21. 2. 2007, 15:36:22
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 |
#3 · Zasláno: 21. 2. 2007, 16:58:31
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 |
#4 · Zasláno: 21. 2. 2007, 17:03:33
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 |
#5 · Zasláno: 21. 2. 2007, 21:14:20 · Upravil/a: H13
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 |
#6 · Zasláno: 22. 2. 2007, 00:06:48
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 |
#7 · Zasláno: 22. 2. 2007, 11:27:54 · Upravil/a: H13
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 |
#8 · Zasláno: 22. 2. 2007, 11:39:56
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 |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0