我想通过下划线和上划线使文本垂直居中。文本元素位于绝对定位的div内,并且高度未知(可变)。文本的字体大小和水平位置也必须可变。

换句话说:我想放置文本,以便下划线和上划线之间的中心恰好在包含div的中心。

另外,我想在文本前面显示一个矩形(使用div):

<div class="container">
  <div class="rectangle"></div>
  <div class="text">Text</div>
</div>


这是一个示例:http://codepen.io/zabbarob/pen/CHxLe

* { margin: 0; padding: 0; border: 0; }

.container {
  position: absolute; top: 5px; height: 25px;
  zoom: 800%; /* debugging */
  vertical-align: middle;
}

.rectangle {
  display: inline-block;
  width: 50px; height: 100%;
  background-color: green;
}

.text {
  display: inline-block;
  text-decoration: underline overline;
  font-size: 20px;
  position: absolute; left: 50px;
  background: lightgreen;
  /* center vertically by underline and overline */
  top: 0; bottom: 0;
  line-height: 25px;
}

最佳答案

嗯,您是否考虑过使用边框的顶部/底部来模仿它,而不是使用实际的上划线/下划线(可能难以自定义)?因此,您可以如下修改文本的CSS定义:

.text {
    display: inline-block;
    /*text-decoration: underline overline;*/
    font-size: 20px;
    position: absolute; left: 50px;
    background: lightgreen;
    /* center vertically by underline and overline */
    top: 0; bottom: 0;
    line-height: 23px; /* Height of the element beside it, minus 2px for the borders */
    border-top:1px solid #000;
    border-bottom:1px solid #000;
}


这是一个modified CodePen演示。根据您的要求,这可能不是最佳选择(例如,带缩放的边框比例,而下划线则不是),但它至少为您提供了解决问题的另一种方法。

希望这可以帮助!如果您有任何问题,请告诉我。

关于html - 通过下划线和上划线的中心垂直居中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25317102/

10-12 00:07