| /** |
| * smooth-scroll.js 1.0.0 |
| * Make your page scrolling smooth |
| * Requires JQuery - Does not work with JQuery slim |
| * Based on https://css-tricks.com/snippets/jquery/smooth-scrolling/ |
| */ |
| |
| (function() { |
| |
| var duration = 500 |
| |
| $('a[href*="#"]') |
| // Remove links that don't actually link to anything |
| .not('[href="#"]') |
| .click(function(event) { |
| // On-page links |
| if ( |
| location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') |
| && |
| location.hostname == this.hostname |
| ) { |
| // Figure out element to scroll to |
| var target = $(this.hash); |
| target = target.length ? target : $('[name=' + this.hash.slice(1) + ']') |
| // Does a scroll target exist? |
| if (target.length) { |
| // Only prevent default if animation is actually gonna happen |
| event.preventDefault() |
| |
| $('html, body').animate({ |
| scrollTop: target.offset().top |
| }, |
| duration, function() { |
| // Callback after animation |
| // Must change focus! |
| var $target = $(target); |
| $target.focus(); |
| if ($target.is(":focus")) { // Checking if the target was focused |
| return false; |
| } else { |
| $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable |
| $target.focus(); // Set focus again |
| }; |
| }); |
| } |
| } |
| }); |
| |
| })(); |