对于具有多行标题的div,文本与中心完美对齐。但是对于单行标题,情况并非如此(即使将text-align设置为center)。文本将自身与父跨度的左边界对齐。看起来绝对是微不足道的,但还没有成功。
span.text-content {
background: rgba(255,255,255,0.5);
color: white;
cursor: pointer;
display: inline-block;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
opacity:0;
}
span.text-content span {
display: table-cell;
text-align: center;
vertical-align: middle;
color: #000;
font-weight: 900;
text-transform: uppercase;
position:absolute;
top: 45%;
}
<span class="text-content"><span>Post Title</span></span>
答案 0 :(得分:1)
以下是使用您的代码进行的修复(我更改了背景颜色和不透明度,因此我可以看到它)。
主要更改是使父显示:table并为子项提供100%的宽度,以便text-align可以正常工作。
span.text-content {
background-color: white;
color: white;
cursor: pointer;
display: table;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
span.text-content span {
display: table-cell;
width: 100%;
text-align: center;
vertical-align: middle;
color: #000;
font-weight: 900;
text-transform: uppercase;
position:absolute;
top: 45%;
}
&#13;
<span class="text-content"><span>Post Title</span></span>
&#13;
答案 1 :(得分:1)
编织: http://kodeweave.sourceforge.net/editor/#fe0c9da444a8df390c6242afa00f0bb3
这是一个简单的修复!
使用display table-cell时,父元素必须为display table。
注意:默认情况下,span元素为display inline。
要使文字水平居中,您需要text-align center(在这种情况下是table-cell
的父级。
同样在这种情况下,您不需要将位置(或顶部)应用于table-cell
,因为使用vertical-align middle已将文字垂直居中于table-cell
。
另外,span.text-content
资格过高,只需使用.text-content
。
BTW:我删除了.text-content
上的不透明度,因此我可以看到该文字。
.text-content {
cursor: pointer;
display: table;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.5);
color: white;
text-align: center;
}
.text-content span {
display: table-cell;
vertical-align: middle;
color: #000;
font-weight: 900;
text-transform: uppercase;
}
<span class="text-content">
<span>Post Title</span>
</span>