即使一个单元格只包含一张图片,您也必须知道表格单元格的高度是根据 text 基线的位置计算的;并且当前的文本样式会影响计算此基线位置及其后的行距。
您可能认为设置 "line-height:1" 足以避免这种行间距,即总是出现在每一行文本下方的边距间隙。这还不够。最简单的解决方案是为包含图像的单元格设置“line-height:0.8”(或更低),以便 0.2em 默认在基线下方添加间隙(由于仍被推断为默认值到没有文本)将使基线适合单元格高度。然后,您可以在单元格中正确放置一个图像(或任何固定高度的元素),其高度将决定单元格的高度,而无需拉伸单元格的高度。
注意:使用此行高,您放置在该单元格中的任何文本的基线都将位于该单元格的底部,因此下降部分将与当前单元格的底部填充、边框、边框间距重叠,或者在下一行的单元格的边框、内边距或内容中,或者如果单元格在最后一行,则在表格下方的内容中。
在 Google Chrome(当前版本 15)上测试
示例 (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>
请注意仅包含图像的表格单元格(行高:0)的“z”类的技巧,以使它们完全适合图像大小。
此示例中显示的图像是 8 个不同方向的小方形照片。每张照片只有一个 1px 的灰色细边框,其标签显示在上方或下方,照片完全适合单元格边框。
请注意,重定向使用 WebKit 样式(适用于 Safari 和 Chrome);您可以通过更改前缀添加 IE 和 Firefox 的等效属性;对于 CSS3,不需要前缀。如果不支持这些变换,图像将不会被重新定向/镜像,但它们仍将完全适合单元格,没有额外的内部间隙。