Newsgroup: it.comp.lang.javascript
Titolo: [OT] Altezza celle tabella

Data una tabella stupida come questa (per comodità ho lasciato tutto nella
pagina senza css esterni):
<html><head>
</head><body>
<table border="1"><tr><td rowspan=2>colonna
rowspan=2<br/>lunga<br/>lunga<br/>lunga<br/>lunga<br/></td>
<td>seconda colonna</td><td>terza colonna</tr>
<tr valign="top"><td>seconda colonna</td><td>terza colonna</td></tr>
</table>
</body></html>
Ho bisogno che la prima riga sia alta "il minimo possibile" mentre la
seconda riga occupi il rimanente ...
ho giocato con i vari height di tr e td senza successo.
ho provato la max-height ma sembra ignorarla (testato tutto con ie7 -
firefox 2.0).
Attualmente mi ritrovo per ogni pagina a dover mettere nella seconda riga
una immagine trasparente molto alta, in questo modo i browser
automaticamente "schiacciano" la prima riga all'altezza minima. 'na
schifezza perché non sapendo quanto è alta la colonna del rowspan rischio
effetti a video orrendi (tipo spazio bianco in eccesso in basso se
l'immagine è troppo alta, oppure ottengo solo parzialmente il risultato
voluto se l'immagine è troppo bassa).
Qualche idea?
Grazie
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 Grazie
non lo so se me lo merito ... :)

 <td>seconda colonna</td><td style="height:10%">terza colonna
eh, magari ... :-) con le height purtroppo non ne esci con IE, perché le
ignora se non hai una height nei parent (e io non la ho, la tabella ha
dimensioni estremamente variabili) (tutto ok invece con firefox 2.0)
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 
hai valutato qualcosa del genere?
+-------------------++-------------------------------------------+
|     div con       ||         div con float:left                |
|                   ||  +-------------------------------------+  |
|                   ||  |paragrafo alto "poco"                |  |
|                   ||  +-------------------------------------+  |
|                   ||  +-------------------------------------+  |
|                   ||  |                                     |  |
|                   ||  |      tabella                        |  |
|                   ||  |                                     |  |
|                   ||  |                                     |  |
|                   ||  |                                     |  |
|                   ||  +-------------------------------------+  |
|                   ||                                           |
+-------------------++-------------------------------------------+

 la seconda riga occupi il rimanente ...
<html><head>
<style type="text/css">td {vertical-align:top;}</style>
</head><body>
<table border="1" height="100%"><tr><td rowspan=2>colonna
rowspan=2<br/>lunga<br/>lunga<br/>lunga<br/>lunga<br/></td>
<td>seconda colonna</td><td>terza colonna</tr>
<tr><td height="100%">seconda colonna</td><td>terza colonna</td></tr>
</table>
</body></html>
Cosě?
-- 
Saluti
Renato
 

 Così?
prova, vedrai che non funziona perfettamente (allarga-aumenta la tabella,
ma comunque sia non spiaccica bene in alto).
Ho dimenticato di dire che mi serve per dei siti con doctype xhtml 1.1.
Per firefox appunto basta mettere un height=1% e via, per IE sto risolvendo
con una expression (prende altezza tabella e sottrae l'altezza del
contenuto di una delle td, il risultato lo assegna alla td
sottostante)...più difficile a scriversi che a farsi in realta: detta PH3Sx
la colonna col rowspan=2, e PH3Dx la td di destra della prima riga, basta
settare la td della seconda riga (PH2Centrale) semplicemente con un
qualcosa del tipo
#PH2Centrale {
	height:expression(AltezzaColonnaCentrale());
}
dove la mia AltezzaColonnaCentrale sarà
  Hnero=GetRef("PH3Dx").firstChild.offsetHeight,
  HPH3Sx=GetRef("PH3Sx").offsetHeight;
  return HPH3Sx-Hnero+"px";
Grazie comunque a tutti.
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 Qualche idea?
Nidifica. Due TD, in quello di dx metti una tabella.
Saluti.
Luciano

 Qualche idea?
tutte cose gia' postate e che ho visto che non danno buoni risultati, sorry
:(
ti avrei proposto di farlo in JS, ma ho visto che lo fai con una expression
che sarebbe del tutto analoga...
Tuttavia nasce sponatanea la seguente curiosita':
perche' non nidificare una saconda tabella (come per altro ti hanno gia'
fatto notare, intanto OT per OT...)?
Posso capire che abbandonare le tabelle in questo caso possa essere anche
infattibile, ma cavarsela senza scomodare JS e accrocchi per IE, non
sarebbe meglio? 

 sarebbe meglio?
sì, ma è un esempio di un sito un po' più complesso, e di cui stiamo
ragionando un restyling completo; preferivo quindi non metter mano alla
struttura in questo momento.
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 sottostante)...
Eh, se non ci fossi io, come faresti. :P
Scherzi a parte, per riprendere il discorso lasciato in sospeso
l'altro giorno su MSN; IE ha bisogno di una height definita. In
quel caso ti funziona tutto correttamente. Imposta quindi sulla
tabella e sulle celle relative una sorta di "altezza minima", e
nel caso in cui le celle abbiano contenuti più grandi, tutti si
estenderà di conseguenza.
Qualcosa tipo, riprendendo il tuo codice e rimaneggiandolo alla
"peggio" (è solo a scopo esimplificativo):
<html><head>
</head><body>
	<style>
		#bbe{
			background:silver;
			width:320px;
			height:200px;
		}
		.c{
			background:gray;
			height:100px;
		}
	</style>
<table border="1" padding="0" style="height:300px">
	<tr>
		<td rowspan="2" valign="top">
			<div id="bbe">320x200</div>
		</td>
		<td style="height:100px"><div class="c">AAAAAAAAAAAAAA</div></td>
		<td><div class="c">AAAAAAAAAAAAAA</div></td>
	</tr>
	<tr>
		<td style="height:200px">
			BBBBBBBBBBBBB<br />
			BBBBBBBBBBBBB<br />
		</td>
		<td>
			BBBBBBBBBBBBB<br />
			BBBBBBBBBBBBB<br />
		</td>
	</tr>
</table>
</body></html>
nel caso in cui le celle abbiano contenuti più grandi, tutti si
Se poi a una delle due righe "B" si va ad aggiungere dell'altro
testo, vedrai che l'effetto finale è quel che cerchi.
Potresti quindi fare la prima riga di circa 90/92 pixel, che mi
pare fosse la dimensione minima nel tuo caso; mentre la seconda
riga potrebbe essere alta quanto l'altezza della prima colonna,
quella con il rowspan, meno i pixel di cui sopra.
E l'altezza della prima colonna, coinciderebbe con quella della
table.
Il tutto, se ho ricordato bene la situazione.
-- 
~ "L'unico requisito necessario affinchè il male si diffonda,
è che le persone per bene non facciano nulla." (Edmond Burke)

 sottostante)...
Eh, se non ci fossi io, come faresti. :P
Scherzi a parte, per riprendere il discorso lasciato in sospeso
l'altro giorno su MSN; IE ha bisogno di una height definita. In
quel caso ti funziona tutto correttamente. Imposta quindi sulla
tabella e sulle celle relative una sorta di "altezza minima", e
nel caso in cui le celle abbiano contenuti più grandi, tutti si
estenderà di conseguenza.
Qualcosa tipo, riprendendo il tuo codice e rimaneggiandolo alla
"peggio" (è solo a scopo esemplificativo):

		</td>
	</tr>
</table>
</body></html>
nel caso in cui le celle abbiano contenuti più grandi, tutti si


 sottostante)...




		</td>
	</tr>
</table>
</body></html>
Se poi a una delle due righe "B" si va ad aggiungere dell'altro


 Il tutto, se ho ricordato bene la situazione.
Sì, ricordi bene ... ho risolto per ora con una expression come dici te
(altezza = altezza prima colonna - altezza CONTENUTO (che è una table)
della terza colonna della prima riga).
Grazie per le dritte!
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 Grazie per le dritte!
Ma de nada, ci mancherebbe
-- 
~ Tenete la morte lontano dalle strade. Guidate sul marciapiede.

 struttura in questo momento.
Si, immaginavo


eh beh, mi sembra che gli hai risolto il problema, non sembra che se ne sia
accorto, pero'...
Tra l'altro strano, perche' sono sicuro di averci provato anch'io a mettere
un'altezza "finta", ma mi sembrava che non "funzionasse" :P
Anche se l'avessi messa nel primo <tr> avrei ottenuto la stessa cosa, boh,
chissa' dove l'avevo messa...