我正在尝试做类似于健康栏的操作,而我目前正在努力使文本居中。我用尽了所有的选择,当文本更改长度时或者文本超出条形图的边框时,它要么偏离中心。
这是我当前CSS的外观
.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位数。
答案 0 :(得分:1)
您可以将rotate
和translate
合并为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;
}
答案 2 :(得分:0)
尝试一下:
.barText{
position: absolute;
line-height: 96px;
top: 0;
bottom: 0;
right: 0;
left: 0;
transform: rotate(-90deg);
color: "white"
}