// lock scrollnav on scroll var $scrollNav = $('.mcs-scrollnav'); var sTop = $scrollNav.offset().top + 84; $(window).scroll(function (event) { var y2 = $(this).scrollTop(); if (y2 >= sTop) { $scrollNav.addClass('mcs-scrollnav-lock'); $body.addClass('add-padding-more'); } else { $scrollNav.removeClass('mcs-scrollnav-lock'); $body.removeClass('add-padding-more'); } }); // highlight active section when scrolling function navHighlight() { var scrollTop = $(document).scrollTop(); $('.mcs-feature').each(function () { var xPos = $(this).position(); var sectionPos = xPos.top; var sectionHeight = $(this).height(); var overall = scrollTop + sectionHeight; if ((scrollTop + 240) >= sectionPos && scrollTop < overall) { $(this).addClass('mcs-feature-active'); $(this).prevAll().removeClass('mcs-feature-active'); } else if (scrollTop <= overall) { $(this).removeClass('mcs-feature-active'); } }); var xIndex = $('.mcs-feature-active').children('.anchor').attr('id') $('.mcs-scrollnav--item[href="#'+ xIndex +'"]').addClass('mcs-scrollnav--item-active').siblings().removeClass('mcs-scrollnav--item-active'); } // find out which elements are overflowing the left side of scrollnav container function whatsOverflowingLeft () { var scrollnavLeft = $('.mcs-scrollnav--list').offset().left; $('.mcs-scrollnav--list').find('.mcs-scrollnav--item').each(function(){ var self = $(this); if(self.offset().left < scrollnavLeft) { self.addClass('overflowing-left'); } else { self.removeClass('overflowing-left'); } }); } // find out which elements are overflowing the right side of scrollnav container function whatsOverflowingRight () { var scrollnavRight = $('.mcs-scrollnav--list').offset().left + $('.mcs-scrollnav--list').width(); $('.mcs-scrollnav--list').find('.mcs-scrollnav--item').each(function(){ var self = $(this); if(self.offset().left + self.width() > scrollnavRight) { self.addClass('overflowing-right'); } else { self.removeClass('overflowing-right'); } }); } // mark scrollnav container to note left overflow function hasLeftOverflow () { if($('.mcs-scrollnav--list .overflowing-left').length > 0){ $('.mcs-scrollnav').addClass('overflows-left'); } else { $('.mcs-scrollnav').removeClass('overflows-left'); } } // mark scrollnav container to note right overflow function hasRightOverflow () { if($('.mcs-scrollnav--list .overflowing-right').length > 0){ $('.mcs-scrollnav').addClass('overflows-right'); } else { $('.mcs-scrollnav').removeClass('overflows-right'); } } // scroll list forward when clicking arrow function goForward () { if($('.mcs-scrollnav--list .overflowing-right').length > 0){ $('.mcs-scrollnav--list').animate({ scrollLeft: 2000 },200); } else { } } // scroll list backward when clicking arrow function goBack () { if($('.mcs-scrollnav--list .overflowing-left').length > 0){ $('.mcs-scrollnav--list').animate({ scrollLeft: 0 },200); } else { } } // call functions on load $(function() { navHighlight(); whatsOverflowingLeft(); whatsOverflowingRight(); hasLeftOverflow(); hasRightOverflow(); }); // call functions on scroll $(window).scroll(function() { navHighlight(); if($('.mcs-scrollnav--item-active.overflowing-left').length > 0){ goBack(); setTimeout(whatsOverflowingLeft,250); setTimeout(whatsOverflowingRight,250); setTimeout(hasLeftOverflow,300); setTimeout(hasRightOverflow,300); } else if($('.mcs-scrollnav--item-active.overflowing-right').length > 0){ goForward(); setTimeout(whatsOverflowingLeft,250); setTimeout(whatsOverflowingRight,250); setTimeout(hasLeftOverflow,300); setTimeout(hasRightOverflow,300); } else { } }); // call functions on click forward $(function(){ $('.scrollnav-next, .overflowing-right').on('click',function() { goForward(); setTimeout(whatsOverflowingLeft,250); setTimeout(whatsOverflowingRight,250); setTimeout(hasLeftOverflow,300); setTimeout(hasRightOverflow,300); }); }); // call functions on click back $(function(){ $('.scrollnav-back, .overflowing-left').on('click',function() { goBack(); setTimeout(whatsOverflowingLeft,250); setTimeout(whatsOverflowingRight,250); setTimeout(hasLeftOverflow,300); setTimeout(hasRightOverflow,300); }); });