2016-06-20 2 views
0

Я нахожу ответы на вопрос о добавлении прокрутки jQuery вверх или прокрутку к якорям, но на самом деле они не интегрированы. Так что надеюсь, что здесь можно спросить.jQuery Smooth Scroll to Top И для привязки по ID

У нас есть текущая функция jQuery, чтобы добавить прокрутку к вершине для более длинных страниц. Он работает нормально.

// Add To Top Button functionality 
jQuery(document).ready(function($){ 

    // Scroll (in pixels) after which the "To Top" link is shown 
    var offset = 700, 
    //Scroll (in pixels) after which the "back to top" link opacity is reduced 
    offset_opacity = 1200, 
    //Duration of the top scrolling animation (in ms) 
    scroll_top_duration = 700, 
    //Get the "To Top" link 
    $back_to_top = $('.to-top'); 

//Visible or not "To Top" link 
    $(window).scroll(function(){ 
    ($(this).scrollTop() > offset) ? $back_to_top.addClass('top-is-visible') : $back_to_top.removeClass('top-is-visible top-fade-out'); 
    if($(this).scrollTop() > offset_opacity) { 
     $back_to_top.addClass('top-fade-out'); 
    } 
}); 

//Smoothy scroll to top 
$back_to_top.on('click', function(event){ 
    event.preventDefault(); 
    $('body,html').animate({ 
     scrollTop: 0 , 
     }, scroll_top_duration 
    ); 
}); 

}); 
  • Как бы это быть изменено также позволяет плавную прокрутку к якорям на странице, используя идентификатор (например, <h2 id="anchor-name">), без конфликтов?

ПРОЯСНИТЬ: Нам нужны либо модификации вышеприведенного сценария, или полный новый, который не будет конфликтовать с ним, что добавит плавную прокрутку к любой ссылке якоря, найденной в существующей HTML страницы (например, , <a href="#any-anchor-link">). JS должен обнаруживать любые привязные ссылки и добавлять к нему функциональные возможности прокрутки. Мы не будем вручную добавлять конкретные привязку к JS.

+0

Как вы хотите идентифицировать идентификатор для прокрутки? Разбор URL на загрузке страницы? Или какой-либо другой тип ввода (щелчок мышью по href)? – Nate

+0

Да, в вашем вопросе недостаточно информации для определения _what_ для прокрутки. на самом деле это, вероятно, сложная часть, прокрутка к ней тривиальна с jQuery – kirinthos

+0

Почему бы не использовать реальные привязные ссылки и позволить jquery обрабатывать их, так что падение назад - это нормальное поведение? :) – Medda86

ответ

0

Извлечена логика прокрутки в ее собственную функцию, которая принимает элемент id в качестве аргумента.

//Smoothy scroll to top 
$back_to_top.on('click', function(event) { 
    event.preventDefault(); 
    targetedScroll(); 
}); 

// example of smooth scroll to h2#anchor-name 
$('#some-button').on('click', function(event) { 
    event.preventDefault(); 
    targetedScroll('anchor-name'); 
}); 

// bind smooth scroll to any anchor on the page 
$('a[href^="#"]').on('click', function(event) { 
    event.preventDefault(); 
    targetedScroll($(this).attr('href').substr(1)); 
}); 

// scrolling function 
function targetedScroll(id) { 
    // scrollTop is either the top offset of the element whose id is passed, or 0 
    var scrollTop = id ? $('#' + id).offset().top : 0; 

    $('body,html').animate({ 
     scrollTop: scrollTop, 
    }, scroll_top_duration); 
} 
+0

Пробовал заменять все, начиная с '// Smoothy прокручивать вверх до конца в моем коде с этим, но не повезло. Прокрутка вверх по-прежнему работает, но ссылки привязки не являются гладкими. Нужно ли добавлять специальные привязки к JS, или это будет видно из HTML на странице?!? Извините, не очень хорошо JS. Я попытался добавить текущий идентификатор привязки, чтобы заменить ваше «имя-якорь» как тест, но это тоже не сработало. Вам нужно просто подобрать существующие привязывающие ссылки (например, '

Смежные вопросы