2013-10-11 3 views
1

Я пытаюсь создать индикатор выполнения прокрутки для веб-сайта. В принципе, я хочу, чтобы ширина div (с цветным фоном) была связана с тем, как далеко прокручивается пользователь.Соедините ширину div с scrollTop() с помощью jQuery/javascript

Я довольно новичок в jQuery - это только мой второй проект. Любые идеи о том, как я могу заставить его работать?

Вот мой HTML:

<div class="scroll-progress"></div> 

Вот CSS:

.scroll-progress { 
    width:10px; height:10px; 
    background-color:green; 
    position:fixed; 
    top:0em; 
    left:0em; 
} 

и JQuery я взял хак на:

$(document).ready(function(){ 

    $(window).scroll(function(){ 

var docHeight = $(document).height(); 
var scrollDepth = $(window).scrollTop(); 
var scrollPercent = parseFloat(scrollDepth/docHeight) * 100; 


    $(".scroll-progress").css(width,scrollPercent); 


    }); 
}); 
+1

почему изобретать http://jqueryui.com/progressbar/ –

+0

так что я просто вставить scrollPercent как значение? –

+0

ищет что-то более похожее: http://stackoverflow.com/a/11196440/2472219, но это не работает для меня. не может понять, почему. –

ответ

3

Я разработал свой проект немного, проверьте это: (мультипликатор - 103, а не 100, из-за различий в том, что полоса прокрутки hei GHT вызывает себя)

http://jsfiddle.net/tdBfD/5/

$(document).ready(function(){ 
    $(window).scroll(function(){ 
     var docHeight = $(document).height(); 
     var ScrollTop = $(window).scrollTop(); 
     var NewWidth = (ScrollTop/docHeight) * 103 
     $(".scroll-progress").width(NewWidth); 
    }); 
}); 
+1

Это круто! – JakeParis

+0

awesome ... я буквально просто вычислил это самостоятельно, кроме 103. Спасибо! –

+0

в качестве оповещения (число «103» может немного отличаться от браузера к браузеру. Например, в Codepen (http://codepen.io/tautcopy/pen/dlyjB) мне нужно было использовать 110. –

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