Autor Zpráva
gaminn
Profil *
Zdravím,
potýkám se s nemožností nastavit velikost buněk složitější tabulky, jako je tato:

<table cellpadding="0" cellspacing="0" border="1" width="100%">
<tr>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
<td style="width: 7.14%;"></td>
</tr>
<tr><td colspan="14">něco něco</td></tr>
<tr><td colspan="14"></td></tr>
<tr><td colspan="14">něco něco</td></tr>
<tr><td colspan="14">něco něco něco něco něco něco</td></tr>

<tr>
<td colspan="1">10:10</td>
<td colspan="5">něco něco něco něco</td>
<td colspan="2">x</td>
<td colspan="5">něco něco</td>
<td colspan="1"> </td>
</tr>
</table>

Potřebuji, aby každá jedna buňka měla stejnou velikost (zde mám 14 buněk do řádku, takže to vychází na nějakých 7.14%, buňka s colspan = 5 bude mít šířku 5*7.14%). Toto řešení, jak mám uvedeno výše, funguje, bohužel je ale vidět, např. pokud má celá tabulka nějaké ohraničení, nežádoucí bílý pruh nahoře (tvořený těmi 14 buňkami v prvním řádku, kterými nastavuji šířku každé buňky).

Celé je to dále komplikováno tím, že tabulka může mít různý pčoet buněk do řádku (je generována pomocí PHP), takže nemůžu do externího stylu napsat pevnou šířku (do stylů přímo ve zdrojovém kódu stránky by se to dalo vypisovat, ale pokud možno, styly přímo do zdrojáku nechci).

Dále bych nechtěl pomocí PHP přidělit šířku nějakému řádku, abych pak nadále při generování tabulky testoval, zda už je šířka někde vypsána, abych ji nemusel vypisovat znovu a zbytečně tak prodlužovat zdrojový kód. Jednoduše chci v nějakém pevně daném místě tabulky tuto šířku definovat a dále se jí nezabývat (tak, jak to je ve zdrojáku výše... až na ten bílý pruh, o kterém jsem mluvil).
tiso
Profil
Čo bude v tej tabuľke?
gaminn
Profil *
tiso
(To je nepodstatné, ne?) Bude naplněná inline elementy, které budou různě široké, ale je podstatné, pokud se všechny elementy do své buňky vejdou, aby všechny jednoduché buňky měly velikost 100/pocet_bunek_na_radek% (ekvivalentně s tím buňky s colspan = x).
tiso
Profil
Tak si daj do hlavičky:
<style>

#divna-tabulka td{width: 7.14%;}
</style>

...a šírku si generuj podľa počtu buniek v tabuľke...
gaminn
Profil *
tiso
Psal jsem, že takové řešení pokud možno nechci. Je to divné přání, ale nebylo by přesto možné najít jiné řešení?

PS: Proč je ta tabulka divná? ;)
tiso
Profil
Keď sa brániš jednoduchým riešeniam tak si lám hlavu so zložitejšími sám...
gaminn
Profil *
tiso
Já tu nikoho do pomoci nenutím, já se ptám, zda někdo nezná jiné řešení. Není potřeba ihned tak uštěpačně... (nebo máte na Slovensku po včerejším večeru všichni špatnou náladu :D (jenom vtip)).
tiso
Profil
Nesledujem fotbal, takže to ma vôbec netrápi... Mal som bad day at work... A nechápem prečo to nechceš tak ako som Ti napísal, pravdupovediac som to celé ani poriadne nečítal... Iná možnosť je do externého css natvrdo zadefinovať pár tried pre používaný počet buniek na riadok... To tiež nie je schodné riešenie?
...
.table14{width: 7.14%;}
.table10{width: 10%;}
...
gaminn
Profil *
tiso
Mal som bad day at work
Jj, je to znát...;) Zítra to bude určitě lepší;)

Tohle řešení bude vlastně úplně nejlepší, ve vlastním kódu nebude jediná vlastnost css. Díky, já bych určitě vymýšlel nějaké složitosti.
gaminn
Profil *
Asi jsem otravný a neodbytný, ale pořád se potýkám s tím problémem, že musím mít v tabulce jeden řádek, ve kterém jsou rozepsány všechny úplně buňky (žádný colspan). Pokud tento řádek dám pryč, celá tabulka se zase rozhodí. Takže úplně znova:

<table cellpadding="0" cellspacing="0" border="1" width="100%">
<tr><td colspan="14">něco něco</td></tr>
<tr><td colspan="14"></td></tr>
<tr><td colspan="14">něco něco</td></tr>
<tr><td colspan="14">něco něco něco něco něco něco</td></tr>

<tr>
<td colspan="1">10:10</td>
<td colspan="5">něco něco něco něco</td>
<td colspan="2">x</td>
<td colspan="5">něco něco</td>
<td colspan="1"> </td>
</tr>
</table>

Lze docílit u takové tabulky, aby na každou buňku padlo stejně místa s ohledem na to, jaký má colspan (colspan = 2 bude dvakrát menší než colspan = 4)?
Bubák
Profil
Toto řešení, jak mám uvedeno výše, funguje, bohužel je ale vidět
Tak ho zneviditelníme ;-)
<tr style="position: absolute; visibility: hidden;">
gaminn
Profil *
Bubák
No... já jsem zkoušel ten řádek skrýt s display:none; . Jak je možné, že toto funguje? Po visibility by přece mělo zůstat volné místo, takže bych měl ten bílý pruh vidět tak jako tak...
gaminn
Profil *
Bubák
Jo, jasně, ono tam je ještě position:absolute... ok. Díky moc, tohle funguje 100%.
gaminn
Profil *
Bubák
Že já to nevyzkouším radši ve všech prohlížečích hned. To funguje jen v IE, Firefox opět na zmizení řádku reaguje rozhozením tabulky.
tiso
Profil
Druhá možnosť je pohrať sa s výškou toho vrchného pruhu, farbou pozadia...
Plaváček
Profil
gaminn


Já tomu nerozumím, ale jestli jsem to dobře pochopil, pak chceš něco takhle podobného http://klient.plavacek.net/tabulka.html ?
Ten první řádek s nastavením šířek pochopitelně musíš ponechat, ale můžeš ho učinit neviditelným, viz zdrojový kód.
LuckyT
Profil
gaminn
Stačí použít style="table-layout: fixed"
Funguje to spolehlivě ve FF, Opere a IE6. Nevím jak starší verze IE.
gaminn
Profil *
tiso
To mě taky napadlo, jenže ta tabulka (generováná jedním skriptem) může mít různé barvy pozadí, asi by to nebylo nejlepší.

Plaváček
Ano, přesně o to mi šlo, děkuji. Musím ale odpovědět stejně, jako tisovi: Nějak tak jsem si s tabulkou zkoušel pohrát, spíš než neviditelný bych ten řádek nazýval zamaskovaný. Já potřebuji, aby ten řádek opravdu úplně zmizel (třeba kvůli ráměečku, který má tabulka kolem dokola (rámečky kolem buněk nemám)).

LuckyT
Nechci to zakřiknout, ale přesně tohle jsem zřejmě hledal. Díky


Problém je tedy asi vyřešen, všem moc díky za rady.
Toto téma je uzamčeno. Odpověď nelze zaslat.