单行文本未与div中心对齐

时间:2016-05-12 02:24:03

标签: html css text-align

对于具有多行标题的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>

2 个答案:

答案 0 :(得分:1)

以下是使用您的代码进行的修复(我更改了背景颜色和不透明度,因此我可以看到它)。

主要更改是使父显示:table并为子项提供100%的宽度,以便text-align可以正常工作。

&#13;
&#13;
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;
&#13;
&#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>