Что это? Взять 8 лет , чтобы получить ответ на проблему - это слишком много?
Ну, лучше поздно, чем никогда!
Вы действительно действительно близки к решению. Я бы сделал это с transform: translate()
:
#nav {
position: fixed;
right: 0;
top: 50%;
transform: translateY(-50%);
}
Согласно Можно ли использовать? , он поддерживается всем, кроме IE8 и Opera Mini (что, честно говоря, довольно хорошая поддержка).
Я бы порекомендовал вам немного перебить его и просто добавить все префиксы вендора (просто чтобы убедиться!):
#nav {
position: fixed;
right: 0;
top: 50%;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
Вот фрагмент кода, чтобы показать его вам в действии:
#nav {
right: 0;
top: 50%;
position: fixed;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
background-color: #ccc;
padding: 20px;
}
<div id="nav">
ABC<br/>
DEFGH<br/>
IJKLMNO<br/>
PQRS<br/>
TUVWXYZ
</div>
Надеюсь, это все еще актуально для вас! (кого я шучу, это было 8 лет )