【发布时间】:2011-01-30 17:03:43
【问题描述】:
我有一个带有背景图像的 div,需要水平和垂直居中。在该图像之上,我还想显示一个 1 行文本,同时水平和垂直居中。
我设法使图像居中,但文本未垂直居中。我认为 vertical-align:middle 可以解决问题。
这是我的代码:
<div style="background: url('background.png') no-repeat center; width:100%; height:100%; text-align:center;">
<div style="color:#ffffff; text-align: center; vertical-align:middle;" >
Some text here.
</div>
</div>
有什么想法吗?
解决方法:我实际上是通过使用表格来实现的。 (我可能会被 HTML 社区诅咒到地狱。)有什么重要的理由不使用这个顺便说一句?不过,我仍然对使用 div 的解决方案感兴趣。
<table width="100%" height="100%">
<tr>
<td align="center" style="background: url('background.png') no-repeat center; color:#ffffff;">Some text here.</td>
</tr>
</table>
【问题讨论】:
-
对非表格数据的任何内容使用表格具有触发可访问性问题的声誉。但是,只有在 linearization 时表格内容中断时才会触发此类问题。有一个测试线性化的技巧:将
table, tr, td { display: block; }添加到测试 CSS 表中:如果内容仍然可用/可读(尽管布局中断),则您的表可以序列化;如果它变得完全无法使用,辅助技术将无法解析您的表格。在单单元表的情况下,线性化永远不会被破坏,所以你应该没问题。 -
@Christophe Herreman:“顺便说一句,有什么重要的理由不使用这个吗?”在我看来,不,在这种情况下没有不使用表格的重要理由,除了在解决问题时自动满足。对于这个特定任务,使用表格甚至可能是一种更跨浏览器的解决方案,而不是使用 CSS。
-
@Marco Demaio 有一个重要的原因。对于视障人士和使用屏幕阅读器的人来说,它不太容易访问。