58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
$(document).ready(function () {
|
|
|
|
var sidebarInner = $('.sidebar-inner');
|
|
|
|
initAffix();
|
|
resizeListener();
|
|
|
|
function initAffix () {
|
|
var headerOffset = getHeaderOffset(),
|
|
footerOffset = getFooterOffset(),
|
|
sidebarHeight = $('#sidebar').height() + NexT.utils.getSidebarb2tHeight(),
|
|
contentHeight = $('#content').height();
|
|
|
|
// Not affix if sidebar taller then content (to prevent bottom jumping).
|
|
if (headerOffset + sidebarHeight < contentHeight) {
|
|
sidebarInner.affix({
|
|
offset: {
|
|
top: headerOffset - CONFIG.sidebar.offset,
|
|
bottom: footerOffset
|
|
}
|
|
});
|
|
}
|
|
|
|
setSidebarMarginTop(headerOffset).css({ 'margin-left': 'initial' });
|
|
}
|
|
|
|
function resizeListener () {
|
|
var mql = window.matchMedia('(min-width: 991px)');
|
|
mql.addListener(function(e){
|
|
if(e.matches){
|
|
recalculateAffixPosition();
|
|
}
|
|
});
|
|
}
|
|
|
|
function getHeaderOffset () {
|
|
return $('.header-inner').height() + CONFIG.sidebar.offset;
|
|
}
|
|
|
|
function getFooterOffset () {
|
|
var footerInner = $('.footer-inner'),
|
|
footerMargin = footerInner.outerHeight(true) - footerInner.outerHeight(),
|
|
footerOffset = footerInner.outerHeight(true) + footerMargin;
|
|
return footerOffset;
|
|
}
|
|
|
|
function setSidebarMarginTop (headerOffset) {
|
|
return $('#sidebar').css({ 'margin-top': headerOffset });
|
|
}
|
|
|
|
function recalculateAffixPosition () {
|
|
$(window).off('.affix');
|
|
sidebarInner.removeData('bs.affix').removeClass('affix affix-top affix-bottom');
|
|
initAffix();
|
|
}
|
|
|
|
});
|