动态垂直文本垂直对齐问题

时间:2016-11-04 06:12:33

标签: html css css3

我有一些文字可能在不同的页面上有所不同。我需要让它垂直对齐中间。由于文本宽度较小,因此存在一些问题。

.vertical-text-block {
  width: 40px;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  float: left;
  background-color: grey;
}
.vertical-text {
  display: block;
  position: relative;
  top: 50%;
  white-space: nowrap;
  font-size: 10px;
  text-transform: uppercase;
  transform: translateY(-50%);
  transform: rotate(-90deg);
}
<div class="vertical-text-block">
  <span class="vertical-text">ASHWANI SHARMA</span>
</div>

它应该如下图所示:

enter image description here

3 个答案:

答案 0 :(得分:1)

我添加了right: 50%transform-origin: right并删除了transform: translateY()

.vertical-text-block {
  width: 40px;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  float: left;
  background-color: grey;
  background-image: linear-gradient(darkgrey 0%, darkgrey 50%, lightgrey 50%);
  background-repeat: no-repeat;
}
.vertical-text {
  display: block;
  position: relative;
  top: 50%;
  right: 50%;                      /* 1 */
  white-space: nowrap;
  font-size: 10px;
  text-transform: uppercase;
  /*transform: translateY(-50%);*/ /* 2 */
  transform: rotate(-90deg);
  transform-origin: right;         /* 3 */
}
<div class="vertical-text-block">
  <span class="vertical-text">ASHWANI SHARMA</span>
</div>

答案 1 :(得分:1)

我对DOM进行了一些小改动,并且能够实现它,即使文本居中,无论其长度如何

对DOM进行了一些小改动。

<div class="vertical-text-wrap">
<div class="vertical-text-block">
</div>
<span class="vertical-text">American Leadership Index</span>
</div>

添加了额外的包装,希望允许

.vertical-text-wrap {
  position: absolute;
  height: 100%;
  margin: 0px 20px;
}
.vertical-text-block {
  width: 40px;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  float: left;
  background-color: grey;
}
.vertical-text {
  display: inline-block;
  position: relative;
  top: 50%;
  left: -35%;
  font-size: 10px;
  text-transform: uppercase;
  transform-origin: 50% 50%;
  transform: translateY(50%) rotate(-90deg);
}
<div class="vertical-text-wrap">
  <div class="vertical-text-block">

  </div>
  <span class="vertical-text">American Leadership Index</span>
</div>

此处捕获的是,当文字变短时,left的{​​{1}}位置必须进行调整。

但是嘿,它是垂直居中的:)

答案 2 :(得分:0)

我认为你也可以这样做http://codepen.io/Danstan/pen/QGWggO 只需在.vertical-text上正确添加translateX和translateY,所有内容都将在中心

.vertical-text {
font-size:8px;
text-transform: uppercase;
position: absolute;
top: 50%;
left: 50%;
white-space: nowrap;
-webkit-transform: translateX(-50%) translateY(-50%) rotate(90deg);
transform: translateX(-50%) translateY(-50%) rotate(90deg); white-space: nowrap;font-size: 10px;}