Fix smooth scrolling for Home and Back to Top links

This commit is contained in:
George Cushen 2016-05-12 23:43:43 +01:00
commit 1e3879e5a7
3 changed files with 32 additions and 14 deletions

View file

@ -1,6 +1,4 @@
# Website URL (e.g. http://www.example.com/) baseurl = "http://replace-this-with-your-website-url.com/"
baseurl = "/"
title = "Academic Theme" title = "Academic Theme"
copyright = "© 2016 Your Name" copyright = "© 2016 Your Name"
languageCode = "en-us" languageCode = "en-us"
@ -86,7 +84,7 @@ googleAnalytics = ""
[[menu.main]] [[menu.main]]
name = "Home" name = "Home"
url = "#" url = "#top"
weight = 1 weight = 1
[[menu.main]] [[menu.main]]

View file

@ -26,4 +26,4 @@
<title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title> <title>{{ if not .IsHome }}{{ .Title }} | {{ end }}{{ .Site.Title }}</title>
</head> </head>
<body> <body id="top">

View file

@ -9,11 +9,13 @@
* Add smooth scrolling to all links inside the main navbar. * Add smooth scrolling to all links inside the main navbar.
* --------------------------------------------------------------------------- */ * --------------------------------------------------------------------------- */
$("#navbar-main li.nav-item a").on('click', function(event){ $('#navbar-main li.nav-item a').on('click', function(event){
// Store requested URL hash.
var hash = this.hash; var hash = this.hash;
if( hash && $(hash).length && ($("#homepage").length > 0)) { // If we are on the homepage and the navigation bar link is to a homepage section.
if( hash && $(hash).length && ($("#homepage").length > 0)){
// Prevent default click behavior // Prevent default click behavior
event.preventDefault(); event.preventDefault();
@ -25,18 +27,36 @@
scrollTop: $(hash).offset().top - navbarHeight scrollTop: $(hash).offset().top - navbarHeight
}, 800, function () { }, 800, function () {
// Add hash (#) to URL once finished scrolling to hash position // Add hash (#) to URL once finished scrolling to hash position
window.location.hash = hash; if (hash == "#top"){
window.location.hash = ""
}else {
window.location.hash = hash;
}
}); });
} }
}); });
/* ---------------------------------------------------------------------------
* Smooth scrolling for Back To Top link.
* --------------------------------------------------------------------------- */
$('#back_to_top').on('click', function(event){
event.preventDefault();
$('html, body').animate({
'scrollTop': 0
}, 800, function(){
window.location.hash = ""
});
});
/* --------------------------------------------------------------------------- /* ---------------------------------------------------------------------------
* Smooth scrolling for mouse wheel. * Smooth scrolling for mouse wheel.
* --------------------------------------------------------------------------- */ * --------------------------------------------------------------------------- */
function smoothScroll(scrollTime, scrollDistance){ function smoothScroll(scrollTime, scrollDistance){
if (navigator.userAgent.indexOf('Mac') != -1 || navigator.userAgent.indexOf('Firefox') > -1 || jQuery('body').hasClass('is-horizontal')) { if (navigator.userAgent.indexOf('Mac') != -1 || navigator.userAgent.indexOf('Firefox') > -1 || jQuery('body').hasClass('is-horizontal')){
return; return;
} }
@ -63,15 +83,15 @@
* Hide mobile collapsable menu on clicking a link. * Hide mobile collapsable menu on clicking a link.
* --------------------------------------------------------------------------- */ * --------------------------------------------------------------------------- */
$(document).on('click','.navbar-collapse.in',function(e) { $(document).on('click','.navbar-collapse.in',function(e){
if( $(e.target).is('a') && $(e.target).attr('class') != 'dropdown-toggle' ) { if( $(e.target).is('a') && $(e.target).attr('class') != 'dropdown-toggle' ){
$(this).collapse('hide'); $(this).collapse('hide');
} }
}); });
/* -------------------------------------------------------------------------------------------------------------------------- /* ---------------------------------------------------------------------------
* On Window Load. * On window load.
* ----------------------------------------------------------------------------------------------------------------------- */ * --------------------------------------------------------------------------- */
$(window).load(function(){ $(window).load(function(){