From 244bdf290b9dc44c117d48f8715bbf5796d53cdd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Je=CC=81re=CC=81my=20Fabre?= Date: Fri, 14 Oct 2016 15:03:58 +0200 Subject: [PATCH] Sticky menu --- app/static/src/js/modules/sticky-kit-init.js | 17 +++++++++++------ app/static/src/js/modules/summary.js | 9 +++++++++ app/static/src/sass/modules/navs/_nav-tree.scss | 9 +++++++++ .../pages/menus/current_tree_primary.html | 2 +- .../pages/menus/current_tree_secondary.html | 2 +- app/templates/pages/page.html | 4 ++++ 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/app/static/src/js/modules/sticky-kit-init.js b/app/static/src/js/modules/sticky-kit-init.js index 413397d8..d6351708 100644 --- a/app/static/src/js/modules/sticky-kit-init.js +++ b/app/static/src/js/modules/sticky-kit-init.js @@ -17,21 +17,23 @@ StickyKitInit.prototype.init = function() { options = {}, data, element, $element; - /*var sliders = $('.page__slider'); + var sliders = $('.page__slider'); if(sliders.length > 0) { - that.pageContentTop = $('.page__content').offset().top + $('.page__content').height() - 400; - that.pageContentBottom = $('.page__sub').offset().top; - }*/ + that.pageContentTop = $(sliders[0]).offset().top - 72; + that.pageContentBottom = that.pageContentTop + (sliders.length * 724) + 72; + } $('[data-sticky]').each(function(i) { $element = $(this); $element.on('sticky_kit:bottom', function(e) { var $self = $(this); + $(this).parent().parent().css('position', 'static'); $(this).parent().css('position', 'static'); $(this).addClass('to-bottom'); }) .on('sticky_kit:unbottom', function(e) { + $(this).parent().parent().css('position', 'relative'); $(this).parent().css('position', 'relative'); $(this).removeClass('to-bottom'); }); @@ -57,7 +59,8 @@ StickyKitInit.prototype.init = function() { }); $(window).resize( $.throttle(1000, that.windowResize.bind(that)) ); - //$(window).scroll( that.windowScroll.bind(that) ); + $(window).scroll( that.windowScroll.bind(that) ); + that.windowScroll(); }; @@ -70,10 +73,12 @@ StickyKitInit.prototype.windowScroll = function(e) { if(that.elements[i].attached) { + var height = that.elements[i].$element.height(); var top = $(window).scrollTop(); - if(top >= that.pageContentTop && top < that.pageContentBottom) { + if(top >= (that.pageContentTop - height) && top < (that.pageContentBottom)) { that.elements[i].$element.addClass('faded'); } else { + console.log('remove'); that.elements[i].$element.removeClass('faded'); } diff --git a/app/static/src/js/modules/summary.js b/app/static/src/js/modules/summary.js index 46459d5a..41a555d7 100644 --- a/app/static/src/js/modules/summary.js +++ b/app/static/src/js/modules/summary.js @@ -46,6 +46,15 @@ Summary.prototype.init = function() { // Scrollspy $(document).on("scroll", that.onScroll.bind(that)); + // Row height + if($('.page__sidebar .nav-tree--level-0').height() > $('.page__content').height()) { + + $('.page__content').css({ + 'margin-bottom': $('.page__sidebar .nav-tree--level-0').height() - $('.page__content').height() + 48 + }); + + } + } }; diff --git a/app/static/src/sass/modules/navs/_nav-tree.scss b/app/static/src/sass/modules/navs/_nav-tree.scss index 083a0591..adcbec96 100644 --- a/app/static/src/sass/modules/navs/_nav-tree.scss +++ b/app/static/src/sass/modules/navs/_nav-tree.scss @@ -6,11 +6,20 @@ $module: ".nav-tree"; margin: 0; list-style-type: none; z-index: 2; + + position: absolute; + width: 100%; + + .nav-tree & { + position: relative; + } + opacity: 1; @include transition(opacity 0.25s ease-in-out); &.faded { opacity: 0; + @include transition(opacity 0.25s ease-in-out); } &.is_stuck { diff --git a/app/templates/pages/menus/current_tree_primary.html b/app/templates/pages/menus/current_tree_primary.html index 92bb1fc3..2c1dc962 100644 --- a/app/templates/pages/menus/current_tree_primary.html +++ b/app/templates/pages/menus/current_tree_primary.html @@ -6,7 +6,7 @@ {% for page in page_branch %} {% if page.in_menu and page.has_children_in_menu %} {% if page.is_primary and page.is_current_or_ascendant %} -