Обновлено 2018
Большая часть сокращения для прокрутки реализации Navbar для 3.x выполняется с использованием компонента Affix для изменения стиля навигационной панели в определенной позиции прокрутки.
Тем не менее, Affix был сброшен из Bootstrap 4 ..
"Выпало плагин Affix jQuery. Мы рекомендуем использовать позицию: липкий полиспол См. HTML5. Пожалуйста, введите подробную информацию и конкретные рекомендации по полированию. "
Чтобы создать аналогичный эффект Navbar в Bootstrap 4, вы можете использовать
position: sticky
(не поддерживается во всех браузерах) добавив классsticky-top
в Navbar. Это работает с « stick » на Navbar, когда он достигает вершины, но не не запускает событие, указывающее, когда оно « застряло », , Поэтому JS необходимо изменить стиль Navbar, когда он « застрял ».Один JS-метод, поддерживаемый в современных браузерах, -
IntersectionObserver
. Используйте его, чтобы «смотреть», когда скрытый элемент триггера над Navbar достигает области просмотра (когдаstuck
применяется к элементуhtml
)..stuck .sticky-top { background-color: #222; padding-top: 3px; padding-bottom: 3px; }
Sticky Top Navbar - IntersectionObserver Demo
Вы также можете использовать плагин jQuery, такой как ScrollPos-Styler , или написать свой собственный jQuery для управления стилями навигации в прокрутке ...
Как это работает:
Navbar с фиксированным верхом с
data-toggle="affix"
:
jQuery, чтобы смотреть положение прокрутки и условно переключать класс
.affix
:var toggleAffix = function(affixElement, scrollElement, wrapper) { var height = affixElement.outerHeight(), top = wrapper.offset().top; if (scrollElement.scrollTop() >= top){ wrapper.height(height); affixElement.addClass("affix"); } else { affixElement.removeClass("affix"); wrapper.height('auto'); } }; /* use toggleAffix on any data-toggle="affix" elements */ $('[data-toggle="affix"]').each(function() { var ele = $(this), wrapper = $(''); ele.before(wrapper); $(window).on('scroll resize', function() { toggleAffix(ele, $(this), wrapper); }); // init toggleAffix(ele, $(window), wrapper); });
CSS для управления стилем аффикса (добавление / высота, цвет и т. д.):
html,body { height:100%; padding-top:56px; /*height of fixed navbar*/ } .navbar { -webkit-transition:padding 0.2s ease; -moz-transition:padding 0.2s ease; -o-transition:padding 0.2s ease; transition:padding 0.2s ease; } .affix { padding-top: 0.2em !important; padding-bottom: 0.2em !important; -webkit-transition:padding 0.2s linear; -moz-transition:padding 0.2s linear; -o-transition:padding 0.2s linear; transition:padding 0.2s linear; } section { min-height:calc(100% - 70px); }
Примечание: Начиная с Bootstrap 4.0.0, Navbar немного изменился, так как
navbar-toggleable-*
изменился наnavbar-expand-
Sticky Top Navbar - jQuery Demo
Наконец, вы можете использовать простая функция jQuery $ (window) .scroll (), если вы знаете точное положение, когда Navbar необходимо придерживаться ...
$(window).scroll(function() { /* affix after scrolling 100px */ if ($(document).scrollTop() > 100) { $('.navbar').addClass('affix'); } else { $('.navbar').removeClass('affix'); } });
https://www.codeply.com / go / 62Roy6RDOa
Подробнее Bootstrap 4 chan ge Navbar style на примерах прокрутки: просто липкий после прокрутки (4.0.0) высота усадки (4.0.0) высота усадки (альфа-6 ) прозрачный над фоном изменить цвет после прокрутки
Связанные вопросы: Фиксация навигационной панели сверху на прокрутке Аффикс не работает в Bootstrap 4 alpha