A dispetto del nome (ma perche` usi nomi di oggetti HTML?) th NON e` una tabella o suo elemento, quindi il vertical align non ha effetto.
Il fatto che funzioni in qualche brwoser quando non dichiari la DTD dipende da come i brwoser in tal caso interpretano il codice: sono liberi di farlo come piu` piace a loro.
Visto che vuoi usare XHTML, e` meglio se lo usi correttamente. Non si puo` inserire un testo direttamente dentro un <div>. Puoi metterci un
.
In alternativa puoi rendere l'immagine di tipo block, ma se questa deve essere un link il problema si ripresenta con il tag <a>. Quindi ti consiglio:
codice:
<div class="th1">
<a href="..." title="...">
[img]foto.jpg[/img]
</a>
</div>
Cui corrisponde un CSS del tipo:
codice:
.th1 {
height: 104px;
line-height: 104px;
margin-top: 3px; /* questo non lo capisco */
text-align: center;
}
.th1 a {
display: block;
width: 100%; height: 100%;
line-height: 104px;
}
Lo stile relativo ad <a> potrebbe anche non servire.
In alternativa (sfruttando i CSS2 - in parte non riconosciuti da IE6)
codice:
.th1 {
height: 104px;
line-height: 104px;
text-align: center;
}
.th1 a {
display: block;
width: 100%; height: 100%;
line-height: 104px;
display: table-cell;
vertical-align: middle;
text-align: center;
}