jQuery scrollTo - Center Div na janela verticalmente
Eu tenho um site que usa um menu fixo no topo da página.
Quando um link é clicado, ele deve rolar verticalmente para que o centro desse div de destino se alinhe com o centro vertical da janela, compensado pela altura do cabeçalho. - isto é muito importante para que o div esteja centrado, independentemente da resolução do monitor.
Eu estou usando jQuery e scrollTo, mas não consigo descobrir a matemática necessária para isso.
Aqui está minha tentativa:
function scrollTo(target) {
var offset;
var scrollSpeed = 600;
if (viewport()["width"] > 767 && !jQuery.browser.mobile) {
// Offset anchor location and offset navigation bar if navigation is fixed
offset = $(target).offset().top - document.getElementById('navigation').clientHeight;
} else {
// Offset anchor location only since navigation bar is now static
offset = $(target).offset().top;
}
$('html, body').animate({scrollTop:offset}, scrollSpeed);
}