Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2015, 20:45
Аспирант
Отправить личное сообщение для kos0760 Посмотреть профиль Найти все сообщения от kos0760
 
Регистрация: 03.05.2015
Сообщений: 42

Отсутствует плавный скроллинг по якорям
Здравствуйте! Есть у меня сайт-лендинг из одной страницы. Я к каждому блоку на этой странице добавил якоря, чтобы при нажатии на соотв. пункт меню перемещаться по сайту. Подключил скрипт для плавности перемещения

$('.sp-megamenu-wrapper ul li a').click(function(){
    $('html, body').animate({
  	scrollTop: $( $(this).attr('href') ).offset().top
        }, 900);
      return false;
   });


Ссылки на якоря в меню я прописываю в виде #id_якоря. Вроде как все хорошо, пока не понадобилось добавить на сайт еще несколько страниц. Если я нахожусь на любой из этих страниц и нажимаю на какой-либо пункт меню, я не могу переместиться к нужному якорю на главной. Если прописываю в меню путь к якорям в виде http://имя_домена.ru#id_якоря, тогда все ок, попадаю куда нужно. Но тогда, когда я на главной, пропадает плавная навигация при выборе пунктов меню. Перемещение идет рывками. Может кто сталкивался с подобным и подскажет, как решить проблему. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2015, 21:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

kos0760,
как вариант: дописывать путь в скрипте если не на главной
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2015, 23:18
Аспирант
Отправить личное сообщение для kos0760 Посмотреть профиль Найти все сообщения от kos0760
 
Регистрация: 03.05.2015
Сообщений: 42

Сообщение от рони Посмотреть сообщение
kos0760,
как вариант: дописывать путь в скрипте если не на главной
Если бы вы подсказали как это сделать, я был бы очень благодарен!
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2015, 23:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

kos0760,
ссылку скиньте в личку
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2015, 00:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от kos0760
тогда все ок, попадаю куда нужно. Но тогда, когда я на главной, пропадает плавная навигация при выборе пунктов меню. Перемещение идет рывками. Может кто сталкивался с подобным и подскажет, как решить проблему. Спасибо!
Как Вариант:
Удалять расширения ссылок на текущей странице
var lnk = document.URL.replace(/#.*$/,'');
a[href^=lnk].each(function(){
  this.href = this.href.replace(lnk,'');
});
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2015, 00:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

kos0760,
пропишите пути как делали -- а чтобы вернуть плавность замените ваш скрипт на этот
jQuery('.sp-megamenu-wrapper ul li a').click(function(){
    var sel = this.hash;
    jQuery('html, body').animate({
  	scrollTop: jQuery(sel).offset().top
        }, 900);
      return false;
   });
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2015, 00:59
Аспирант
Отправить личное сообщение для kos0760 Посмотреть профиль Найти все сообщения от kos0760
 
Регистрация: 03.05.2015
Сообщений: 42

Рони, спасибо! Кажется заработало!
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2015, 01:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

kos0760,
можно ещё так дополнить ...
jQuery('.sp-megamenu-wrapper ul li a').click(function(){
    var sel = this.hash;
    jQuery('html, body').animate({
  	scrollTop: jQuery(sel).offset().top
        }, 900);
      return false;
   });

  var hash = document.location.hash;
  hash && jQuery('.sp-megamenu-wrapper ul li a[href *="'+hash+'"]').click();

только вопрос успеет сработать или нет )))

Последний раз редактировалось рони, 29.08.2015 в 01:18.
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2015, 01:21
Аспирант
Отправить личное сообщение для kos0760 Посмотреть профиль Найти все сообщения от kos0760
 
Регистрация: 03.05.2015
Сообщений: 42

Сообщение от рони Посмотреть сообщение
kos0760,
можно ещё так дополнить ...
jQuery('.sp-megamenu-wrapper ul li a').click(function(){
    var sel = this.hash;
    jQuery('html, body').animate({
  	scrollTop: jQuery(sel).offset().top
        }, 900);
      return false;
   });

  var hash = document.location.hash;
  hash && jQuery('.sp-megamenu-wrapper ul li a[href *="'+hash+'"]').click();

только вопрос успеет сработать или нет )))
Ну в принципе и предыдущее решение как бы работает неплохо, но я добавил ваш новый код. Только вот кнопка "домой" в меню не работает как остальные пункты, но мне это не важно, здесь страница перемещается наверх, можно просто сделать отдельную кнопку с такой функцией, а этот пункт меню убрать.
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2015, 01:28
Аспирант
Отправить личное сообщение для kos0760 Посмотреть профиль Найти все сообщения от kos0760
 
Регистрация: 03.05.2015
Сообщений: 42

Сообщение от рони Посмотреть сообщение
kos0760,
можно ещё так дополнить ...
jQuery('.sp-megamenu-wrapper ul li a').click(function(){
    var sel = this.hash;
    jQuery('html, body').animate({
  	scrollTop: jQuery(sel).offset().top
        }, 900);
      return false;
   });

  var hash = document.location.hash;
  hash && jQuery('.sp-megamenu-wrapper ul li a[href *="'+hash+'"]').click();

только вопрос успеет сработать или нет )))
Только сейчас понял в чем разница. Вы сделали плавное перемещение с другой страницы на якоря главной. Оно заметно, если блок с якорем близко к началу страницы.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавный скроллинг на больших Лендингах Altai Общие вопросы Javascript 2 25.02.2015 22:32
Скроллинг в табах Veterinar Элементы интерфейса 10 06.12.2014 17:47
Плавный Скроллинг дока: JS vs Jquery vs Jquery + Плагины SegaMega Events/DOM/Window 1 27.12.2012 15:02
Плавный скроллинг kromol Элементы интерфейса 3 30.07.2011 13:40
Скроллинг с задержкой vladpro Общие вопросы Javascript 3 24.01.2011 14:00