^^^
This doesn't solve my question my situation is different, because of the animated css navigation button. Can get it work like that: display: table-cell and vertical-align: middle; etc.
I have a responsive header that shows a navigation button when in mobile size where you can show the rest of the menu items (disabled in example don't need it for my question).
Because i going to make the header responsive in height it is beter that the navigation button is always centered vertical. Now it is placed in the center with a top margin of 20px and because the button is 20px in height and the header is 60px it is centered, but that won't work if the header height changes responsively.
Code:
<header>
<nav>
<div class="col-nav">
<a href="#" class="nav-btn"><span class="nav-icon"></span></a>
<a href="#" class="home">Name</a>
</div>
<ul>
<li class="col-nav"><a href="#">Item1</a></li>
<li class="col-nav"><a href="#">Item2</a></li>
<li class="col-nav"><a href="#">Item2</a></li>
</ul>
</nav>
</header>
If you can set it's parent's position to relative
then you might be able to use
position: relative;
top: 50%;
transform: translateY(-50%);
on the button