Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Неправильная работа js-scroll (https://javascript.ru/forum/jquery/77499-nepravilnaya-rabota-js-scroll.html)

Timurkin 13.05.2019 22:18

Неправильная работа js-scroll
 
Использую следующий код для плавного перехода к якорям:
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
      if (target.length) {
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 1000, "easeInOutExpo");
        return false;
      }
    }
  });

Все ок, но при первом клике на пункт меню в шапке(которая становится fixed) заголовок перекрывается самой шапкой.
При повторном клике все становится ок.
Как сделать чтобы с первого клика заголовок не перекрывался?
Сайт:
http://dev.web-tim.ru/

рони 13.05.2019 22:58

Timurkin,
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.length) {
                var up = $(window).scrollTop() > 100 ? 0 : -102;
                $('html, body').stop().animate({
                    scrollTop: target.offset().top + up
                }, 1000, "easeInOutExpo");
                return false;
            }
        }
    });

Timurkin 13.05.2019 23:14

рони,
Попробовал ваш вариант, срабатывает только со второго клика(
С первого клика по-прежнему загораживается заголовок

рони 13.05.2019 23:19

Timurkin,
сотрите кеш после замены

Timurkin 13.05.2019 23:37

рони,
Да сбросил первым делом кэш.
В другом браузере еще проверил, на первый клик не отрабатывает.
У вас все ок?

рони 13.05.2019 23:41

Цитата:

Сообщение от Timurkin
У вас все ок?

да, может дадите ссылку, где вы сделали замену?
http://dev.web-tim.ru/assets/compone...rtfolio.min.js

здесь никаких изменений нет

рони 13.05.2019 23:48

Timurkin,
добавьте этот код в конец страницы ... если с заменой не получается
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').off().click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.length) {
                var up = $(window).scrollTop() > 100 ? 0 : -102;
                $('html, body').stop().animate({
                    scrollTop: target.offset().top + up
                }, 1000, "easeInOutExpo");
                return false;
            }
        }
    });

Timurkin 13.05.2019 23:51

рони,
Блин, я дурак)
Не в том файле правил. Большое вам спасибо, все ок!)
А чтобы мне на будущее, в чем смысл вашей правки, мне непонятно(

рони 13.05.2019 23:56

Цитата:

Сообщение от Timurkin
в чем смысл вашей правки, мне непонятно(

компенсация скрипта
$(window).scroll(function(){
        if ( $(this).scrollTop() > 100 ) {
            $('#sidebar-wrapper').addClass('my-navbar-fixed-top');
        } else {
            $('#sidebar-wrapper').removeClass('my-navbar-fixed-top');
        }
    })

можно сделать проверку класса ... и добавлять прокрутку а можно так
var up = $(window).scrollTop() > 100 ? 0 : -102;

Timurkin 14.05.2019 09:27

var up = $(window).scrollTop() > 100 ? 0 : -102;

А что означает "100 ? 0 : -102"?
100 и 102 это пиксели как я понимаю, но в целом непонятно, первый раз такое вижу)


Часовой пояс GMT +3, время: 06:13.