Bootstrap 3.0 scrollspy отзывчивые смещения

Я пытаюсь заставить Bootstrap scrollspy надежно работать на адаптивном сайте, на котором высота верхней панели навигации изменяется в зависимости от ширины медиа / браузера. Таким образом, вместо жесткого смещения наdata-offset Атрибут я устанавливаю его динамически через инициализацию Javascript следующим образом:

$('body').scrollspy({ offset: 70, target: '#nav' });

Для широких макетов (то есть Bootstrap -lg) он работает нормально, но для более узких макетов, похоже, действует эффект «накопления». Другими словами, он отлично работает для первого раздела, но затем требует увеличения пикселей для активации следующих (например, 90 пикселей для следующего, 110 пикселей для третьего и т. Д.).

Я попытался манипулировать объектом scrollspy напрямую, как упоминалось в этом ответе:Как установить смещение для ScrollSpy в Bootstrap? но безрезультатно.

Может кто-нибудь порекомендовать канонический способ реализации scrollspy на адаптивном сайте, где смещение зависит от ширины носителя?

Дополнительная информация:

Я только что проанализировал объект scrollspy в обоих сценариях, и оказалось, что список смещений отличается, когда он инициализируется черезdata- Атрибуты только против через JS. Кажется, что когда я инициализирую его через JS, массив смещений заполняется до того, как произойдут некоторые адаптивные настройки BS, и, следовательно, высоты будут другими. Как я могу вызвать инициализацию scrollspyпосле все отзывчивые вещи закончились? Есть ли перехват / обратный вызов после того, как BS выполнит настройку макета? JS вообще вовлечен или все адаптивные вещи обрабатываются CSS?

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

Ваш ответ на вопрос