5 октября 2019 JavaScript jQuery
Возникла задача сделать прикрепление сайдбара, такое же, как в ВКонтакте. При скролле до верхней границы элемента он закрепляется, а при достижении определенного уровня останавливается и прокручивается до конца вместе со страницей.
Раньше приходилось реализовывать подобное с нуля и это было не очень просто. Теперь выручает jQuery плагин Sticky. С ним можно реализовать множество задач с прикреплением элементов, а так же у него достаточное количество настроек и методов.
Скачиваем плагин на этом сайте.
Подключаем библиотеку jQuery и плагин примерно так:
И инициализируем плагин:
$(document).ready(function(){ $("#sticker").sticky({topSpacing:0}); });
#sticker
— ID блока, который нужно закрепить.
Проверяем. Работает!
Но мне было ещё необходимо сделать отступ у блока сверху, так как при скролле закреплялось верхнее меню. Ну и при достижении footer, чтобы он останавливался. Тут все просто, у плагина есть опции topSpacing
и bottomSpacing
это соответственно и есть нужные отступы сверху и снизу. В переменных topMenuHeight и footerHeight им я передал высоту блока с меню и высоту футера предварительно вычислив их с помощью jQuery.
$(document).ready(function(){ var topMenuHeight = $("#top-menu").height(); var footerHeight = $("footer").height(); $(".sidebar-right").sticky({ topSpacing:topMenuHeight, bottomSpacing:footerHeight }); $(".sticky-right-sidebar").sticky({ topSpacing:topMenuHeight, bottomSpacing:footerHeight }); });