我想在div中居中一个未知长度的文本(好吧它限制在一定的大小,但我不知道它是否需要一行或两行)。因此,我无法使用line-height
。我试图使用display: table-cell
,但是布局被破坏了。我不能使用top
的一些技巧,因为我需要这个用于定位。
样机:
原始代码:
HTML:
<div class="background"> </div>
<div class="TileText">MyText - Another long, long, long text</div>
CSS:
.background{
background-color:#000;
height: 400px;
width: 100%;
}
.TileText{
position: relative;
top: -135px;
max-width: 200px;
height: 80px;
background-color: #FFF;
color: #black;
clear: both;
padding-left: 10px;
}
当前状态:
HTML:
<img src="images/castle.png" width="300" height="333" title="Castle" alt="Castle" />
<div class="TileTextWrapper">
<div class="TileText">Text</div>
</div>
CSS:
.TileTextWrapper{
position: relative;
top: -135px;
max-width: 200px;
height: 80px;
background-color: #FFF;
color: #57abe9;
clear: both;
padding-left: 10px;
display: table;
}
.TileText{
display: table-cell;
vertical-align: middle;
}
更新
现在文本垂直对齐。但我担心display: table
只适用于现代浏览器。
答案 0 :(得分:1)
我已经更新了你的小提琴:
似乎有效
请参阅:http://jsfiddle.net/hSCtq/11/以供参考。
我会将.TileText
放在.background
内。为背景图像创建空div在语义上不正确,在大多数情况下不是必需的。如果您需要将背景图像的不透明度与内容分开设置,则单独背景div的一种情况是。
<div class="background">
<div class="TileText">MyText - Another long, long, long text</div>
</div>
.background {
background-color:#000;
height: 400px;
width: 100%;
display: table
}
.TileText{
max-width: 200px;
display: table-cell;
vertical-align: middle;
color: #fff;
clear: both;
padding-left: 10px;
}
其他问题和答案相同。
Horizontally and vertically center a pre tag without the use of tables?
The old center a image in a div issue ( image size variable - div size fixed )
此外,谷歌搜索“中心垂直文本CSS”的第一个结果将给你我在我的JSfiddle中发布的相同代码结构
答案 1 :(得分:1)
在TileText div中添加<p>
标记:
<强> HTML 强>
<div class="background"> </div>
<div class="TileText"><p>MyText - Another long, long, long text</p></div>
<强> CSS 强>
.background{
background-color:#000;
height: 400px;
width: 100%;
}
.TileText{
position: relative;
top: -135px;
max-width: 200px;
height: 80px;
background-color: #FFF;
color: #black;
clear: both;
padding-left: 10px;
}
.TileText p {
position:absolute;
display: table-cell;
vertical-align: middle
}
答案 2 :(得分:0)
您必须添加display:table-cell;
并添加vertical-align:middle;
答案 3 :(得分:-1)
要实现垂直对齐,您必须使用表格。您可以编写代码:
<div style="width:600px; height:600px; border:#000000 1px solid;">
<table style="width:100%; height:100%; vertical-align:middle">
<tr>
<td>
MyText - Another long, long, long text
</td>
</tr>
</table>
</div>