Incluso si una celda solo contiene una imagen, debe saber que las celdas de la tabla tienen su altura calculada de acuerdo con la posición del texto línea de base; y el estilo de texto actual tiene un impacto en el cálculo de esta posición de referencia y el espaciado de línea después de ella. Puede pensar que establecer "altura de línea: 1" sería suficiente para evitar este espacio de línea, es decir, el espacio de margen que siempre ocurre debajo de cada línea de texto. Esto no es suficiente. La solución más simple es establecer "línea-altura: 0,8" (o inferior) para la celda que contiene la imagen, de modo que la brecha de 0,2em por defecto debajo de la línea de base (que todavía se ingiere como predeterminada debido a la ausencia de texto) hará que la línea base se ajuste a la altura de la celda. A continuación, puede colocar correctamente una imagen (o cualquier elemento de altura fija) en la celda cuya altura determinará la altura de la celda, sin tener que estirar la altura de la celda.
Nota: con esta altura de línea, cualquier texto que coloque en esa celda tendrá su línea de base justo en la parte inferior de la celda, de modo que los descensores se superpongan al margen inferior, borde, espacio entre bordes de la celda actual , o en el borde, relleno o contenido de la celda en la siguiente fila, o contenido debajo de la tabla si la celda estaba en la última fila.
Probado en Google Chrome (versión actual 15)
Ejemplo (HTML5):
<!DOCTYPE html>
<html><head>
<title>Examples of image transforms (rotations and mirroring)</title>
<style>
table,tbody,tr,td,image{margin:0;border:1px solid #999;border-collapse:collapse;border-spacing:0;background:#FFF;color:#000;padding:0;vertical-align:middle;text-align:center;}
td.z{line-height:0;}
</style>
</head><body>
<table border="0" cellspacing="0" cellpadding="0">
<tbody><tr>
<td style="border-bottom:hidden">Normal 0° (1,0,0,1,0,0)</td>
<td style="border-bottom:hidden">Mirrored 0° (-1,0,0,1,0,0)</td>
<td style="border-bottom:hidden">Mirrored 90° (0,1,1,0,0,0)</td>
<td style="border-bottom:hidden">Normal −90° (0,1,-1,0,0,0)</td>
</tr><tr>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(1,0,0,1,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(-1,0,0,1,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(0,1,1,0,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(0,1,-1,0,0,0);"/></td>
</tr><tr>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(1,0,0,-1,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(-1,0,0,-1,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(0,-1,1,0,0,0);"/></td>
<td class="z"><image alt="" src="Avatar-220px.jpg" style="-webkit-transform:matrix(0,-1,-1,0,0,0);"/></td>
</tr><tr>
<td style="border-top:hidden">Mirrored 180° (1,0,0,-1,0,0)</td>
<td style="border-top:hidden">Normal 180° (-1,0,0,-1,0,0)</td>
<td style="border-top:hidden">Normal 90° (0,-1,1,0,0,0)</td>
<td style="border-top:hidden">Mirrored −90° (0,-1,-1,0,0,0)</td>
</tr></tbody>
</table>
</body></html>
Nota el truco de la clase "z" para celdas de la tabla (línea-altura: 0) que contienen solamente una imagen, para que se ajusten exactamente al tamaño de la imagen. Las imágenes que se muestran en este ejemplo son una pequeña foto cuadrada en 8 orientaciones diferentes. Solo hay un borde gris delgado de 1px que encierra cada foto y su etiqueta se muestra arriba o abajo, las fotos se ajustan exactamente dentro de los bordes de la celda.
Tenga en cuenta que la reorientación utiliza estilos WebKit (para Safari y Chrome); puede agregar las propiedades equivalentes para IE y Firefox cambiando el prefijo; para CSS3, no se necesitará prefijo. Si no estas transformaciones no son compatibles, las imágenes no serán reorientadas/reflejadas, pero aún se ajustarán exactamente a la celda, sin espacios internos adicionales.
Esto no es realmente una opción ya que la altura de la columna de la derecha no es realmente fija o conocida cuando se dibuja la página. – undefined
Entiendo. Sin embargo, me temo que mi respuesta sigue siendo la única respuesta: solo soluciones alternativas como la que brindé pueden ser útiles, de lo contrario tendrás que recurrir a JavaScript o a un diseño completamente nuevo. – Jeroen