您可以使用这些值,而不是围绕这些值进行调整:
top: 50%;
left: 50%;
transform:translate(-50%,-50%);
上述内容用于使元素相对于其父容器具有绝对定位的中心。因此,最初将跨度设置为负的顶部值,然后将过渡设置为50%,将使其居中。
span {
position: absolute;
top: -50%;
left: 50%;
transform:translate(-50%,-50%);
transition: top .6s linear;
}
button:hover > span {
top: 50%;
}
button{
position: relative;
transition: all .6s linear
}
i {
color: #FFF;
font-size: 34px !important; /* 24px preferred icon size */
vertical-align: middle;
transition: transform .6s linear;
}
span {
position: absolute;
top: -50%;
left: 50%;
transform:translate(-50%,-50%);
transition: top .6s linear;
}
button:hover > i {
transform: translate3d(0px, 45px, 0px);
}
button:hover > span {
top: 50%;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<button class="btn btn-primary">
<i class="material-icons">face</i>
<span>Face</span>
</button>