vertical-align: middle;
was never meant to center the element. Here is a more trivial example to better see:
p {
background:
linear-gradient(yellow,yellow) center/100% 1px no-repeat, /* the center */
red;
line-height: 80px;
font-size:80px;
display: block;
}
span {
height: 18px;
width: 18px;
display: inline-block;
background: lightblue;
vertical-align: middle;
}
<p>
<span></span>
<-- Not aligned
</p>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…