@Bloggo123

Как быть с плавным перелистывание скролла при нажатии на ссылку?

Здравствуйте! Поставил на сайт скриптик из интернета, для плавного перелистывания к нужному месту в лендинге, вот такой код:
$('a[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);
				return false;
			}
		}
	});


Но у меня есть еще magnific-popup, который так же нуждается в ссылке на идентификатор, и теперь, когда человек нажимается на попап-кнопку - браузер начинает плавно подъезжать к этому месту, как это можно обойти, может быть какие-то исключения прописать, чтобы скрипт перелистывания их как бы обходил стороной?

<a href="#cback" class="call-back button-call-back popup-with-move-anim">Заказать обратный звонок</a>


<menu>
						<ul class="menu">
							<li><a href="#company">О нас</a></li>
							<li><a href="#production">Продукция</a></li>
							<li><a href="#services">Услуги</a></li>
							<li><a href="#question_answer">Вопрос-ответ</a></li>
							<li><a href="#contacts">Контакты</a></li>
							<li><a href="#ord-costing" class="popup-with-move-anim">Заказать расчет стоимости</a></li>
						</ul>
					</menu>

Заранее благодарю.
  • Вопрос задан
  • 595 просмотров
Решения вопроса 1
webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...
$('a[href*="#"]:not([href="#"])').not('.popup-with-move-anim').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);
        return false;
      }
    }
  });
  $('a[href*="#ord-costing"]').click(function(e){
  	e.preventDefault();
  });

https://jsfiddle.net/Ln38fdno/
А вообще, проще открытие попапа повесить на другой блок, например, на span или p.
Не использовать a для этого намного проще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
//Плавная прокрутка к якорю
	$("body").on('click', '[href*="#"]', function(e){
	  var fixed_offset = 100;
	  $('html,body').stop().animate({ scrollTop: $(this.hash).offset().top - fixed_offset }, 1000);
	  e.preventDefault();
	});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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