Смотря конечно какие браузеры вас интересуют и опять же какая ситуация у вас на странице происходит. Ну а так...
.elem {
position: absolute;
top: 50%;
left: 50%;
width: 300px;
height: 300px;
transform: translate(-50%, -50%);
}
.elem {
position: absolute;
top: 50%;
left: 50%;
width: 300px;
height: 300px;
margin: -150px 0 0 -150px;
}
.elem_parent:before {
display: inline-block;
width: 1px;
height: 100%;
margin: 0 -0.3em 0 0;
vertical-align: middle;
}
.elem {
display: inline-block;
width: 300px;
height: 300px;
vertical-align: middle;
}
Ну а ещё можно в браузере нажать F12 и посмотреть как там у них сделано.