From 7bde3149f5196cecf9b7584a4e9ef95d23081060 Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Wed, 9 Aug 2017 01:26:02 +0530 Subject: [PATCH 1/2] adjust padding on fixed .topnav on modal show/hide, to remove the movement --- hosting/static/hosting/js/initial.js | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/hosting/static/hosting/js/initial.js b/hosting/static/hosting/js/initial.js index da2887c6..234fab50 100644 --- a/hosting/static/hosting/js/initial.js +++ b/hosting/static/hosting/js/initial.js @@ -13,4 +13,44 @@ $( document ).ready(function() { }, 1000); }); +}); + +function getScrollbarWidth() { + var outer = document.createElement("div"); + outer.style.visibility = "hidden"; + outer.style.width = "100px"; + outer.style.msOverflowStyle = "scrollbar"; // needed for WinJS apps + + document.body.appendChild(outer); + + var widthNoScroll = outer.offsetWidth; + // force scrollbars + outer.style.overflow = "scroll"; + + // add innerdiv + var inner = document.createElement("div"); + inner.style.width = "100%"; + outer.appendChild(inner); + + var widthWithScroll = inner.offsetWidth; + + // remove divs + outer.parentNode.removeChild(outer); + + return widthNoScroll - widthWithScroll; +} + +// globally stores the width of scrollbar +var scrollbarWidth = getScrollbarWidth(); + +// add proper padding to fixed topnav on modal show +$('body').on('click', '[data-toggle=modal]', function(){ + var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); + $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding+scrollbarWidth); +}); + +// remove added padding on modal hide +$('body').on('hidden.bs.modal', function(){ + var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); + $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding-scrollbarWidth); }); \ No newline at end of file From 789946ff77912441fff884dd518e9dfc41af694b Mon Sep 17 00:00:00 2001 From: ARvind Tiwari Date: Wed, 9 Aug 2017 01:32:41 +0530 Subject: [PATCH 2/2] conditions for adjusting padding fixed --- hosting/static/hosting/js/initial.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/hosting/static/hosting/js/initial.js b/hosting/static/hosting/js/initial.js index 234fab50..d9f15036 100644 --- a/hosting/static/hosting/js/initial.js +++ b/hosting/static/hosting/js/initial.js @@ -42,15 +42,25 @@ function getScrollbarWidth() { // globally stores the width of scrollbar var scrollbarWidth = getScrollbarWidth(); +var paddingAdjusted = false; -// add proper padding to fixed topnav on modal show -$('body').on('click', '[data-toggle=modal]', function(){ - var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); - $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding+scrollbarWidth); -}); +$( document ).ready(function() { + // add proper padding to fixed topnav on modal show + $('body').on('click', '[data-toggle=modal]', function(){ + var $body = $('body'); + if ($body[0].scrollHeight > $body.height()) { + scrollbarWidth = getScrollbarWidth(); + var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); + $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding+scrollbarWidth); + paddingAdjusted = true; + } + }); -// remove added padding on modal hide -$('body').on('hidden.bs.modal', function(){ - var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); - $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding-scrollbarWidth); + // remove added padding on modal hide + $('body').on('hidden.bs.modal', function(){ + if (paddingAdjusted) { + var topnavPadding = parseInt($('.navbar-fixed-top.topnav').css('padding-right')); + $('.navbar-fixed-top.topnav').css('padding-right', topnavPadding-scrollbarWidth); + } + }); }); \ No newline at end of file