提问人:Steven A. Lowe 提问时间:9/18/2008 最后编辑:Steven A. Lowe 更新时间:1/15/2016 访问量:25564
如何使用javascript、css和/或html在表格中的图像上居中文本?
How to center text over an image in a table using javascript, css, and/or html?
问:
如何使用javascript、css和/或html在表格单元格中将文本居中?
我有一个包含图像的 HTML 表格 - 所有图像的大小都相同 - 我想在每个图像上居中放置一个文本标签。标签中的文本大小可能有所不同。水平居中并不难,但垂直居中却是。
附录:我最终不得不使用 javascript 使用具有绝对定位的固定大小的 div 可靠地将文本居中;我只是无法让它以任何其他方式工作
答:
您可以尝试将图像放在背景中。
<table>
<tr>
<td style="background: url(myImg.jpg) no-repeat; vertical-align: middle; text-align: center">
Here is my text
</td>
</tr>
</table>
您只需要设置单元格的高度和宽度,就应该就是这样了。
我会通过CSS将图像设置为单元格的背景,将单元格的大小设置为适当的固定值(再次通过CSS),然后插入文本标签作为单元格内容。默认情况下,表格单元格的内容是垂直居中的,所以我认为您不必担心。同样,可以通过CSS轻松设置垂直和水平对齐。这种方法之所以有效,是因为我应用了很多次。
另一种方法是在表格单元格中插入图像和文本,将文本包装在 DIV 元素中并玩弄其 CSS 属性(相对位置和边距),但在我看来这有点棘手。
您可以使用TD的选项“valign”,它可以是顶部、底部或中心......但据我所知,默认情况下单元格内容是垂直居中的,所以可能你的CSS使它们显示底部或顶部选项。
<TABLE><TR valign=center>
<TD align=center background="some image"> image label </TD>
</TR></TABLE>
评论
在CSS中没有正确的方法(尽管应该有)。但这里有一个适合我的方法。
CSS:
#image1, #image1-text, #image1-container {
overflow: hidden;
height: 100px;
width: 100px;
}
#image1 {
top: -100px;
position: relative;
z-index: -1;
}
#image1-text {
text-align: center;
vertical-align: middle;
display: table-cell;
}
HTML格式:
<div id="image1-container">
<img src="image.jpeg" id="image1">
<div id="image1-text">
hello
</div>
</div>
容器中 和 的顺序无关紧要。image1
image1-text
这有点黑客攻击,但它可以在任何地方使用,而不仅仅是在桌子上。但是,它在 IE 中无法正常工作。它将在顶部显示它。但它适用于 FF、Safari 和 Chrome。尚未在 IE8 中进行测试。
IE7 或更低版本的黑客,它只会显示 1 行,但它将居中是在标签内添加以下内容:<head>
<!--[if lte IE 7]>
<style>
#image1-text {
line-height: 100px;
}
</style>
<![endif]-->
感谢大家的建议。
我最终不得不使用 JavaScript 使用具有绝对定位的固定大小的 div 可靠地将文本居中;我只是无法让它以任何其他方式工作。
我还必须生成隐藏可见性的文本 div,并在页面末尾有一个 javascript 循环,以使它们可见并将它们放在适当的表格单元格上
CSS/HTML 的布局功能存在一些严重的漏洞,希望这些漏洞将在未来的版本中得到解决;-)
评论