Я создаю одностраничный сайт с фиксированной позиционированной панелью навигации, которая плавно прокручивается к различным элементам раздела через привязные ссылки. Поведение по умолчанию для прокрутки к элементу состоит в том, чтобы выровнять его в верхней части окна браузера. Вместо этого я хочу выровнять элемент до середины экрана.
Я использую эту разметку для навигации:
<nav class="main-nav">
<a href="#top">Top</a>
<a href="#section-1">Section 1</a>
<a href="#section-2">Section 2</a>
<a href="#section-3">Section 3</a>
<a href="#section-4">Section 4</a>
<a href="#section-5">Section 5</a>
</nav>
Я использую kswedberg jQuery плавный плагин прокрутки, чтобы сгладить прокрутку. Я начинаю его следующим образом:
$('.main-nav a').smoothScroll({
offset: 0,
speed: 700
});
Я хочу установить смещение как ((window).height / 2) - (element height / 2)
так, чтобы оно было вертикально центрировано, но мне нужна помощь, чтобы выяснить, как правильно его выполнить.
Мне нужно это:
- Получите высоту окна и разделите его на два
- Получить высоту элемента и разделить его на два
- Вычесть первый из последних
- Если возможно, выровняйте его вверху по умолчанию, если элемент выше окна
Поскольку существует множество привязных ссылок, я предполагаю, что мне нужно либо проверить высоту элемента привязки, на которую были нажаты ссылки, либо инициировать smoothScroll для каждой привязной ссылки.
Кто-нибудь знает, как это сделать?