diff --git a/assets/js/academic.js b/assets/js/academic.js
index 2eb5adcc..6d09e7d2 100644
--- a/assets/js/academic.js
+++ b/assets/js/academic.js
@@ -303,10 +303,27 @@
function toggleSearchDialog() {
if ($('body').hasClass('searching')) {
+ // Clear search query and hide search modal.
$('[id=search-query]').blur();
- $('body').removeClass('searching');
+ $('body').removeClass('searching compensate-for-scrollbar');
+
+ // Remove search query params from URL as user has finished searching.
removeQueryParamsFromUrl();
+
+ // Prevent fixed positioned elements (e.g. navbar) moving due to scrollbars.
+ $('#fancybox-style-noscroll').remove();
} else {
+ // Prevent fixed positioned elements (e.g. navbar) moving due to scrollbars.
+ if ( !$('#fancybox-style-noscroll').length && document.body.scrollHeight > window.innerHeight ) {
+ $('head').append(
+ ''
+ );
+ $('body').addClass('compensate-for-scrollbar');
+ }
+
+ // Show search modal.
$('body').addClass('searching');
$('.search-results').css({opacity: 0, visibility: 'visible'}).animate({opacity: 1}, 200);
$('#search-query').focus();
diff --git a/layouts/partials/navbar.html b/layouts/partials/navbar.html
index 7e2ee6ae..3db92c6a 100644
--- a/layouts/partials/navbar.html
+++ b/layouts/partials/navbar.html
@@ -1,5 +1,5 @@
{{ $current_page := . }}
-