Статьи

Использование jQuery для захвата процента вертикальной прокрутки

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

Обновление 03/03/2013 — Добавлен нижний колонтитул блокировки на примере прокрутки ниже.

Это довольно интересно, когда Firefox 8 никогда не достигает 100% прокрутки в окне. Я не совсем уверен, что это ошибка в Firefox или мое плохое понимание того, как рассчитать процент прокрутки.

Как вы можете видеть, окно достигает дна, но FF8 обнаруживает только 99,8% прокрутки.

FF8-never-reaches-bottom

Но использование Chrome 12 достигает 100%, как и ожидалось.

chrome-12-reaches-bottom

//never reaches bottom
$(window).scroll(function(){

    var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();

    console.log('wintop='+wintop);
    console.log('docheight='+docheight);
    console.log('winheight='+winheight);
    console.log(wintop+'=='+(docheight-winheight));
    console.log(wintop==(docheight-winheight));

    if  ($(window).scrollTop() == $(document).height() - $(window).height()) {
       console.log('scroll bottom');
    }

});

Определить% вертикальной прокрутки с помощью jQuery

Этот небольшой скрипт будет запускать код с любым процентом, в настоящее время установлен на 95% окна.

 //capture scroll any percentage
$(window).scroll(function(){

    var wintop = $(window).scrollTop(), docheight = $(document).height(), winheight = $(window).height();
    var  scrolltrigger = 0.95;

    console.log('wintop='+wintop);
    console.log('docheight='+docheight);
    console.log('winheight='+winheight);
    console.log(wintop+'=='+(docheight-winheight));
    console.log(wintop==(docheight-winheight));
    console.log('%scrolled='+(wintop/(docheight-winheight))*100);

    if  ((wintop/(docheight-winheight)) > scrolltrigger) {
       console.log('scroll bottom');
       lastAddedLiveFunc();
    }
});

Теперь мы можем видеть, что Firefox 8 запускает событие.

FF8-reaches-bottom

Пример блокировки нижнего колонтитула

Код JS.

// скрыть / показать нижний колонтитул заблокирован при прокрутке страницы вверх / вниз
$ (window) .bind ('прокрутка', функция (e)
{
var wintop = $ (window) .scrollTop (), docheight = $ (document) .height (), winheight = $ (window) .height (),
showTrigger = '700', // вниз 700 покажет
hideTrigger = '200'; // на 200 это спрячет

// показать при прокрутке вниз
// скрыть при прокрутке вверх
if (wintop> showTrigger)
{
$ ( '# Сноска') addClass ( 'фиксированных') FadeIn ()..;
}
иначе if (wintop <hideTrigger) {$ ('# footer'). fadeOut (). removeClass ('fixed'); }}); [/ js] CSS-код. [js] # footer.fixed {position: fixed; низ: 0; ширина: 100%; } [/ js]