2015-10-02 3 views
0

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

HTML

<body> 
<div class="slide slide1"> 
</div> 
<div class="slide slide2"> 
</div> 
<div class="slide slide3"> 
</div> 
<div class="slide slide4"> 
</div> 
<div class="slide slide5"> 
</div> 

</body> 

CSS

html, body { 
    height: 100%; 
} 

.slide { 
    width: 100%; 
    height: 100%; 
} 

.slide1 { 
    background: red; 
} 

.slide2 { 
    background: blue; 
} 

.slide3 { 
    background: yellow; 
} 

.slide4 { 
    background: green; 
} 

.slide5 { 
    background: gray; 
} 

JS

$(document).ready(function(){ 

     $(window).scrollTop($(document).height()); 

     $('h2').text($(window).height() + 'px'); 
     $('h1').text($(document).scrollTop() + 'px'); 

     $(window).scroll(function() { 
      $('h1').text($(this).scrollTop() + 'px'); 
     }); 
}); 

Fiddle: https://jsfiddle.net/w9bxhsvj/2/

Например, если высота окна 611px, и есть 5 дивы с высоты 100%, scrollTop значение должно быть 3055px, но он показывает 2452px. Что я делаю не так?

ответ

2

Это проблема с заполнением/разметкой.

padding:0; margin:0; до html, body, h1, h2 он решит вашу проблему.

https://jsfiddle.net/w9bxhsvj/4/

+0

Это кажется первый не сосчитать. –

+0

начало отсчета в 0, прокрутка сверху даёт 0. –

+0

Используйте '$ (window) .scrollTop() + $ (window) .height()' –