1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*! http://mths.be/smoothscroll v1.5.2 by @mathias */
- ;
- (function(document, $) {
- var $scrollElement = (function() {
- // Find out what to scroll (html or body)
- var $html = $(document.documentElement),
- $body = $(document.body),
- bodyScrollTop;
- if ($html.scrollTop()) {
- return $html;
- } else {
- bodyScrollTop = $body.scrollTop();
- // If scrolling the body doesn’t do anything
- if ($body.scrollTop(bodyScrollTop + 1).scrollTop() == bodyScrollTop) {
- return $html;
- } else {
- // We actually scrolled, so undo it
- return $body.scrollTop(bodyScrollTop);
- }
- }
- }());
- $.fn.smoothScroll = function(speed) {
- speed = ~~speed || 400;
- // Look for links to anchors (on any page)
- return this.find('a[href*="#"]').click(function(event) {
- var hash = this.hash,
- $hash = $(hash); // The in-document element the link points to
- // If it’s a link to an anchor in the same document
- if (location.pathname.replace(/^\//, '') === this.pathname.replace(/^\//, '') && location.hostname === this.hostname) {
- // If the anchor actually exists…
- if ($hash.length) {
- // …don’t jump to the link right away…
- event.preventDefault();
- // …and smoothly scroll to it
- $scrollElement.stop().animate({
- 'scrollTop': $hash.offset().top
- }, speed, function() {
- location.hash = hash;
- });
- }
- }
- }).end();
- };
- }(document, jQuery));
|