Плавная прокрутка в конце - PullRequest
0 голосов
/ 17 января 2012

У меня есть плавная анимированная прокрутка, которая движется вверх и вниз в зависимости от того, что вы нажимаете на навигацию (благодаря CSS-хитрости !).Теперь все это прекрасно работает, но у меня есть навигация, которая прилипает к верхней части окна браузера и мешает заголовкам разделов при их прокрутке вниз.Я не могу найти кого-то, кто мог столкнуться с подобной проблемой с, казалось бы, очень простой функцией.

Вот JS, который я вставил в мой HTML:

<script type="text/javascript">
$(document).ready(function() {
  function filterPath(string) {
  return string
    .replace(/^\//,'')
    .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
    .replace(/\/$/,'');
  }
  var locationPath = filterPath(location.pathname);
  var scrollElem = scrollableElement('html', 'body');

   $('a[href*=#]').each(function() {
    var thisPath = filterPath(this.pathname) || locationPath;
    if (  locationPath == thisPath
    && (location.hostname == this.hostname || !this.hostname)
    && this.hash.replace(/#/,'') ) {
      var $target = $(this.hash), target = this.hash;
      if (target) {
        var targetOffset = $target.offset().top;
        $(this).click(function(event) {
          event.preventDefault();
          $(scrollElem).animate({scrollTop: targetOffset}, 800, function() {
            location.hash = target;
          });
        });
      }
    }
  });

  // use the first element that is "scrollable"
  function scrollableElement(els) {
    for (var i = 0, argLength = arguments.length; i <argLength; i++) {
      var el = arguments[i],
          $scrollElement = $(el);
      if ($scrollElement.scrollTop()> 0) {
         return el;
      } else {
        $scrollElement.scrollTop(1);
        var isScrollable = $scrollElement.scrollTop()> 0;
        $scrollElement.scrollTop(0);
        if (isScrollable) {
          return el;
        }
      }
    }
    return [];
  }

});</script>

Итак, я нахожусь в процессе изучения JS и JQuery, поэтому я ценю терпение каждого и с нетерпением жду ваших комментариев.

Заранее большое спасибо.

Редактировать: здесь естьмой тестовый сайт: тест

1 Ответ

1 голос
/ 19 января 2012

Получить копию jquery.scrollTo.js из http://flesler.blogspot.com/2008/09/jqueryscrollto-14-released.html

Это то, что контролирует положение элемента прокрутки

 $.scrollTo( 0, 500); 

, который 0 занимал бы в верхней части страницы., если вы установите более высокую цифру, это приведет вас вниз по странице, в моем примере у меня есть 5 разделов, к которым я хотел бы перейти.Измените по мере необходимости.

Я использовал это в разделе заголовка:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>


 <script type="text/javascript" src="javascripts/jquery.scrollTo.js"></script>
 <script type="text/javascript">
 $(document).ready(function()
 {
 // scroll to top
 $('a.topOfPage').click(function(){
 $.scrollTo( 0, 500);
 return false;
 });
 // scroll to top
 $('a.twoOfPage').click(function(){
 $.scrollTo( 570, 500);
 return false;
 });
 // scroll to top
 $('a.threeOfPage').click(function(){
 $.scrollTo( 1175, 500);
 return false;
 });
 // scroll to top
 $('a.fourOfPage').click(function(){
 $.scrollTo( 1790, 500);
 return false;
 });
 // scroll to top
 $('a.fiveOfPage').click(function(){
 $.scrollTo( 2385, 500);
 return false;
 });
 });
 </script>

В разделе тела, соответствующем nav:

 <ul class="pagination">

   <li><a href="" class="topOfPage">1</a></li>
   <li><a href="" class="twoOfPage">2</a></li>
   <li><a href="" class="threeOfPage">3</a></li>
   <li><a href="" class="fourOfPage">4</a></li>
   <li><a href="" class="fiveOfPage">5</a></li>

 </ul>  

Если вам нужно больше ref Iнашел оригинальный код через http://nick.boldison.com/websites/jquery/jquery-scroll-to-top-animation-scrollto-plugin/

Надеюсь, это поможет вам.

Cheers V

...