jQuery scrollTo - Центр Div в окне по вертикали

У меня есть сайт, который использует фиксированное меню в верхней части страницы.

Когда ссылка нажата, она должна прокручиваться вертикально, чтобы центр этого целевого элемента div совпадал с вертикальным центром окна, смещенным на высоту заголовка.   - это очень важно, чтобы div центрировался независимо от разрешения монитора.

Я использую jQuery и scrollTo, но не могу понять, какая математика необходима для этого.

Вот моя попытка:

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);
}

Ответы на вопрос(2)

В конце концов понял это. Просто тупил с математикой. Смещение с фиксированным верхним и нижним колонтитулом также работает для всех разрешений.

    // scrollTo: Smooth scrolls to target id
function scrollTo(target) {
    var offset;
    var scrollSpeed = 600;
        var wheight = $(window).height();
        //var targetname = target;
        //var windowheight = $(window).height();
        //var pagecenterH = windowheight/2;
        //var targetheight = document.getElementById(targetname).offsetHeight;

    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;
                offset = $(target).offset().top - $(window).height() / 2 + document.getElementById('navigation').clientHeight + document.getElementById('footer').clientHeight;
    } else {
        // Offset anchor location only since navigation bar is now static
        offset = $(target).offset().top;
    }

    $('html, body').animate({scrollTop:offset}, scrollSpeed);
}

Я сделал простой jquery. Я думаю, что это может помочь тому, что вы ищете.

Посмотри пожалуйстадемонстрация

Цельdiv оставайтесь вертикально по центру заголовка смещения.

ВАШ ОТВЕТ НА ВОПРОС