@seregindev

Как реализовать плавный скролл с дочерней страницы?

Доброго времени суток.
Столкнулся с такой проблемой.
Мне нужно реализовать такой алгоритм.
1)Находясь на дочерней странице, мы кликаем по элементу меню и нас переносит на главную страницу.
2)После перехода, происходит мягкий скролл к ому элементу(якорю) который был выбран.

Проблема такая, по условию, если нету на странице(на который ссылается данный пункт меню) мы переходим на главную страницу. После клика происходит следующие, начинается загрузка страницы, и срабатывает сразу скролл.
А мне нужно сделать так, только после того как загрузится страница, будет происходить скролл.

jQuery(function($) {
var homepage = 'http://rcamedia.ru/';
$('a[href*="#"]').live('click', function(event) {
  var attrib = $(this).attr('href');
  console.log(attrib);
    if (attrib == "#") {}
    else if($("div").is(attrib)) {}
     else {
       window.location = homepage;
       $(function() {
        if(window.location.hash) {
            var target = window.location.hash;
// убираем хеш из строки(отключаем дефолтный "прыжок")
            window.location.hash = "";
// аниммируем скролл
            $('html, body').animate({
                scrollTop: $(target).offset().top
            }, 300, function () {
// возыращаем хеш
                window.location.hash = target;
            });
        }
});
}
    event.preventDefault(); //сам скрол
    var target_offset = $(this.hash).offset() ? $(this.hash).offset().top : 0;
    //change this number to create the additional off set
    var customoffset = 85;
    $('html, body').animate({scrollTop:target_offset - customoffset}, 500);

});

<ul id="menu-topen-1" class="menu">
<li class="menu-item"><a href="#">Solutions</a></li>
<li class="menu-item"><a href="#">Team</a></li>
<li class="menu-item"><a href="#">Blog</a></li>
<li class="menu-item"><a href="#">Contact</a></li>
</ul>
  • Вопрос задан
  • 796 просмотров
Решения вопроса 1
ewgenio
@ewgenio
Всё по чуть чуть
В коде загружаемой страницы
$(function() {
        if(window.location.hash) {
            var target = window.location.hash;
// убираем хеш из строки(отключаем дефолтный "прыжок")
            window.location.hash = "";
// аниммируем скролл
            $('html, body').animate({
                scrollTop: $(target).offset().top
            }, 300, function () {
// возыращаем хеш
                window.location.hash = target;
            });
        }
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AndrewHaze
@AndrewHaze
Умею гуглить яндексом
Так дождитесь загрузки страницы
$( document ).ready(function() {
  // Handler for .ready() called.
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы