在垂直进度栏中居中显示文本(绝对位置)

时间:2018-12-05 23:33:34

标签: html css

我正在尝试做类似于健康栏的操作,而我目前正在努力使文本居中。我用尽了所有的选择,当文本更改长度时或者文本超出条形图的边框时,它要么偏离中心。

这是我当前CSS的外观

http://prntscr.com/lr9l9c

.bar{
position: relative;
background: #1DA598;
height: 96px;
width: 16px;
border: 1px solid #333;
margin-top: 72px;
margin-left: 24px;
}

.barFiller{
    width: 100%;
    height: 90%;
    transition: width .2s ease-in;
}

.barText{
    position: absolute;
    bottom: 50%;
    top: 50%;
    width: 100%;
    transform: rotate(-90deg);
    color: "white"
}

barFiller和barText是bar的子级

在auto和bot的左上角,右上角,右上角设置边距均无济于事。还有其他选择吗?它应居中且灵活,因为进度条可以从2位数到6位数。

3 个答案:

答案 0 :(得分:1)

您可以将rotatetranslate合并为css transform属性,像这样

.bar {
  border : 1px solid black;
  width : 20px;
  height : 100px;
  position : relative;
}

@keyframes health {
  0% {
    height : 0;
  }
  100% {
    height : 100%;
  }
}

.barFiller {
  animation: health 3s linear infinite;
  width : 100%;
  background : red;
  position : absolute;
  bottom : 0;
}

.barText {
  position : absolute;
  left : 50%;
  top : 50%;
  transform : translate(-50%, -50%) rotate(-90deg);
  color: rgb(0, 255, 255); 
  mix-blend-mode: difference;
}
<div class="bar">
  <div class="barFiller"></div>
  <div class="barText">Logan</div>
</div>

答案 1 :(得分:0)

由于您拥有条形的确切像素,因此不妨使用正确的像素值而不是百分比。

.bar {
  position: relative;
  background: #1da598;
  height: 96px;
  width: 16px;
  border: 1px solid #333;
  margin-top: 72px;
  margin-left: 24px;
}

.barFiller {
  width: 100%;
  height: 90%;
  transition: width 0.2s ease-in;
  background: red;
}

.barText {
  position: absolute;
  height: 15px;
  top: 40px;
  transform: rotate(-90deg);
  color: white;
}

https://codepen.io/rgarcianuskin/pen/MzMVdo

答案 2 :(得分:0)

尝试一下:

.barText{
    position: absolute;
    line-height: 96px;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
    transform: rotate(-90deg);
    color: "white"
}